前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

一、解释

HTTP 状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的 3 位数字代码。

这里所说的超文本传输协议自然就是位于计算机网络应用层的 http 协议(广义上也包括 https )。而响应状态则是指,当客户端向服务端发送请求时,服务端给出了何种类型的响应。按照 RFC 2616 的定义,http 协议对每一种响应类型都给出了唯一对应的三位数字,每个数字称为一个状态码。目前总共有五大类状态码,分别对应五大类状态,各以1-5开头,它们的大致分类如下:

二、5大类

1、1 开头的状态码(服务器已收到请求,但是需要请求者继续操作)

信息响应,表示服务器已收到请求,但是需要请求者继续操作。

状态码 作用
101 这只是个临时的响应状态,它表示到目前为止,客户端请求的内容都没有问题。但是客户端需要继续发送请求,才能完成本次请求过程。
102 该代码是响应客户端的 Upgrade 标头发送的,并且指示服务器也正在切换的协议。比如,我们在使用ws协议时常会见到这个状态码
103 预加载提示。此状态代码主要用于与Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。

协议切换说明:从协议本身来说,http协议和ws协议并没有什么联系。前者是一个无状态、短连接的协议,后者是一个有状态、长连接的协议。但是为了降低协议设计的复杂度,ws协议并没有定义如何直接在客户端和服务端建立一个ws连接,而是约定客户端和服务端应该先建立一个http连接,然后由客户端发送一个切换协议的请求,两者再从http协议切换到ws协议。

2、2 开头的状态码(响应成功,表示服务器已接收到请求并正确处理)

响应成功,表示服务器已接收到请求并正确处理

状态码 作用
200 服务器已成功处理了请求。通常,这表示服务器供了请求的网页。
201 请求成功并且服务器创建了新的资源。
202 服务器已接受请求,但尚未处理。
203 服务器已成功处理了请求,但返回的信息可能来自另一来源
204 服务器已成功处理了请求,但没有返回任何实体内容,并且浏览器不需要刷新或者重定向
205 服务器已成功处理了请求,但没有返回任何实体内容,不过浏览器应该立即刷新当前页面
206 服务器成功处理了部分 GET请求

3、3 开头的状态码(服务器已接收到请求,但没有直接处理,而是重定向)

重定向,表示服务器已接收到请求,但是没有直接处理,而是进行了重定向

状态码 作用
300 针对请求,服务器可执行多种操作。服务器可根据请求者(user_agent)选择一项操作,或提供操作列表供请求者选择。
301 请求的网页已永久移动到新位置。服务器返回此响应对GET或HEAD请求的响应时,会自动将请求者转到新位置
302 请求的资源被临时重定向到了别的URI。但这个重定向只是临时的,下次请求当前资源时仍然应该使用当前的地址
303 服务端已经收到请求,但是不会进行处理。客户端需要向响应中携带的新的URI发送GET请求,服务端才会进行处理
304 表示当前资源已被下载过,并且没有改变,因此客户端应该从缓存中获取该资源
305 当前资源需要使用指定的代理才能访问
306 最新的规范中,306不再被使用
307 请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的

4、4 开头的状态码(客户端错误,客户端的请求存在错误,无法完成请求)

客户端错误,表示客户端发出的请求中存在错误,无法完成请求

状态码 作用
400 请求有误。它包含两种情况:1.语义有误。服务端无法理解当前请求的含义,因此客户端必须对请求进行修改才可以重新发送。2.参数有误。客户端请求中携带的参数不符合服务端的要求,如数量不一致,类型错误,体积过大(如上传文件时,文件大小超出了服务端配置)等。
401 未授权。即当前请求需要进行用户验证
402 该状态码暂未使用,将来可能用于数字支付系统
403 服务器已经接受并理解了请求,但是拒绝执行
404 请求的资源不存在
405 请求方法不允许。比如服务端设置某个资源只能用POST方法进行访问,而客户端发送的是一个GET请求,服务端就会返回状态码405
406 请求的资源的内容特性无法满足请求头中的条件,因此无法生成响应实体。比如客户端设置返回的数据类型必须是JSON,而服务端没有配置转换JSON所依赖的包,或者所请求的资源本身就无法转化为JSON,这时服务端就无法生成符合客户端要求的响应实体,因此就会返回状态码406。
407 需要在代理服务器上进行身份验证。该状态码与401类似,但是它要求客户端必须在代理服务器上进行身份验证
408 请求超时。
409 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息
410 如果请求的资源已永久删除,服务器就会返回此响应。
411 服务器不接受不含有效内容长度标头字段的请求。
412 服务器未满足请求者在请求中设置的其中一个前提条件。
413 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力
414 请求的URI通常为网址过长,服务器无法处理
415 请求的格式不受请求页面的支持
416 如果页面无法提供请求的范围,则服务器会返回此状态代码
417 服务器未满足”期望”请求标头字段的要求

5、5开头的状态码(服务端错误,服务器在处理请求的过程中出现错误)

服务端错误,表示服务器在处理请求的过程中出现错误

状态码 作用
500 服务器遇到错误,无法完成请求
501 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码
502 服务器作为网关或代理,从上游服务器收到无效响应
503 服务器目前无法使用,由于超载或停机维护。通常,这只是暂时状态
504 服务器作为网关或代理,但是没有及时从上游服务器收到请求
505 服务器不支持请求中所用的HTTP协议版本

ContactAuthor