HTTP 常见状态码有哪些?看这篇你就懂了!

在这里插入图片描述

状态码

目前 RFC 标准里规定的状态码是三位数,所以取值范围就是从 000 到 999。但如果把代码简单地从 000 开始顺序编下去就显得有点太“low”,不灵活、不利于扩展,所以状态码也被设计成有一定的格式。

RFC 标准把状态码分成了五类,用数字的第一位表示分类,而 0~99 不用,这样状态码的实际可用范围就大大缩小了,由 000~999 变成了 100~599。

这五类的具体含义是:

  • 1××:提示信息,表示目前是协议处理的中间状态,还需要后续的操作;
  • 2××:成功,报文已经收到并被正确处理;
  • 3××:重定向,资源位置发生变动,需要客户端重新发送请求;
  • 4××:客户端错误,请求报文有误,服务器无法处理;
  • 5××:服务器错误,服务器在处理请求时内部发生了错误。

在 HTTP 协议中,正确理解和应用状态码并非客户端或服务器一方的单方面责任,而是双方共同的责任。

客户端作为请求的发起者,接收服务器返回的响应报文后,需要通过状态码来判断请求是否被正确处理。如果请求成功,客户端可以继续后续操作;如果请求失败,则需要根据状态码的具体含义,判断是否需要再次发送请求,或进行相应的错误处理。例如,如果状态码为 404,则表示请求的资源不存在,客户端需要重新检查请求地址或采取其他措施。

服务器端作为请求的接收者,也应该合理运用状态码,向客户端清晰地传达处理结果,并指示客户端下一步应该采取的行动。在处理请求时,服务器应该选择最恰当的状态码来回复客户端,避免使用过于笼统的状态码,例如 400 或 500,这些状态码的含义过于模糊,无法为客户端提供足够的信息。

1xx类

1xx 类状态码属于提示信息,协议处理的中间状态

  • 101(切换协议):请求者已要求服务器切换协议,服务器已确认并准备切换。它的意思是客户端使用 Upgrade 头字段,要求在 HTTP 协议的基础上改成其他的协议继续通信,比如 WebSocket。而如果服务器也同意变更协议,就会发生状态码 101,但这之后的数据传输就不会再使用 HTTP 了。

2xx类

2xx类表示服务器成功处理了客户端的请求

  • 200(成功) : 最常见的成功状态码,表示一切正常,服务器如客户端所期待的返回了处理结果,如果不是 HEAD 请求,通常在响应头后都会有 body 数据
  • 201(已创建):请求成功并且服务器创建了新的资源
  • 202(已接受):服务器已接受请求,但尚未处理
  • 203(非授权信息):服务器已经成功处理了请求,但返回的信息可能来自于另一个来源
  • 204(无内容):另一个常见的成功状态码,服务器成功处理了请求,但没有返回任何内容,也就是响应头后没有 body 数据
  • 206(部分内容):服务器成功处理了部分 GET 请求,服务器返回的 body 数据是资源的一部分

3xx类

3xx类 状态码表示客户端请求的资源的路径发生了转变,需要客户端用新的 URL 来获取资源,也就是重定向

  • 301(永久重定向):请求的资源已经永久移动到了新的位置。值得注意的是严格来讲这种重定向并不是服务器跳转,而是客户端跳转,“跳”的动作实际上客户端根据服务器返回的状态码 301 后完成跳转的
  • 302(临时重定向):说明请求路径的资源还在,但暂时需要另一个 URL 来访问
  • 304(未修改):说明自从上次请求后,请求的网页未修改过,服务器返回此响应时,不会返回网页内容,而是重定向到客户端本地浏览器的缓存资源中

重定向301 和 302 的区别?

重定向301是永久重定向,客户端收到301状态码后,会记忆重定向后的新URL,这样下一次访问的时候,就不会再访问旧的URL,而是直接访问新的URL
重定向302是临时重定向,客户端收到302状态码后,不会记录重定向后的新URL,这样下一次访问的时候,还需要访问旧的URL,再重定向到新URL

4xx类

4xx类 转态码表示客户端发送的请求报文错误

  • 400(错误请求):表示请求报文错误,但具体是数据格式错误、请求头缺少还是 URI 长度过大没有明确说,只是一个笼统的错误,客户端看到 400 只会是“一头雾水”
  • 401(未授权):请求要求身份验证,对于需要登录的网页,服务器可能返回此响应
  • 403(禁止):服务器拒绝请求,没有权限去访问服务器的资源或者请求的 IP 地址被封掉了
  • 404(未找到)代表服务器上没有该资源,或者说服务器找不到客户端请求的资源,是最常见的请求错误码

5xx类

5xx类 状态码表示客户端请求报文正确,但是服务器处理时内部发生了错误,属于服务器端的错误码

  • 500(服务器内部错误):代表服务器程序错误,也就是说请求的网页程序本身报错了。在服务器端的网页程序出错。由于现在的浏览器都会对 500 做一定的处理,所以在一般情况下会返回一个定制的错误页面
  • 501(尚未实施):服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码
  • 502(错误网关):通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误
  • 503(服务不可用):表示服务器当前无法使用(超载或者停机维护),我们上网时遇到的“网络服务正忙,请稍后重试”的提示信息就是状态码 503
  • 504(网关超时):服务器作为网关或者代理,但是没有及时从上游服务器收到请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值