HTTP中响应状态码解析
当服务器收到客户端的请求报文后,经过一顿操作和处理,会给客户端一个响应报文;
响应的报文 = 由响应头 + 数据体
响应头 = 状态行 + 头字段构成
状态行是如下结构
响应的状态行.pngversion + status code + reason
我们今天说的就是 status code 状态码 (可不是错误码哦!)
状态码
在RFC标准的规范里,状态是三位数,取值范围是从000 ~ 999;
同时RFC标准把状态码分成了五类,数字的第一位表示分类
0~99不用,范围在100~599
分类总结
-
1xx:提示信息,目前是协议处理的中间状态,还需要后续操作;
-
2xx:成功,报文已经收到并被正确处理;
-
3xx:重定向,资源位置发生变动,需要客户端重新发送;
-
4xx:客户端错误,请求报文有误,服务器无法处理;
-
5xx:服务器错误,服务器在处理请求时内部发生错误;
常用状态码解读
1xx
属于提示信息,时协议处理的中间状态,实际能够用到的时候很少;
- 【101】Switching Protocols :客户端使用Upgrade头字段,要求在HTTP协议的基础上改成其他的协议继续通信;
2xx
表示服务器已经接收到客户端发来的请求并成功处理;
-
【200】 OK 成功状态码,非HEAD请求,通常响应报文中会头信息+body;
-
【204】 No Content 常见的成功状态码,但是响应报文中只有响应头信息没有body数据;
-
【206】Partial Content 通常是HTTP中分块下载或者断点续传的基础,也是表示成功状态码,与200很相似,但是返回的数据中不是全部的资源,是资源的一部分;
-
一般情况下206状态码会与头字段中【Content-Range】一起使用,用于表明body中数据的具体范围;
- Content-Range:bytes 0-99/2000 表示的意思1是 获取2000字节的钱100字节;
-
3xx
表示请求的资源发生的变动,客户端必须使用新的URI重新发送请求获取资源;【重定向】
-
【301】Moved Permanently 永久重定向;资源已经不在了,赶紧换新的URI吧
-
【302】Found 临时重定向:请求的资源还在,需要暂时用另外的URI来访问
- 301和302 会在头字段中使用Location指明后续要访问的URI;
-
【304】Not Modified
4xx
表示客户端发送的请求报文有错误
-
【400】Bad Request:客户端请求的报文是错误的,具体什么错误,不知道;
-
【403】Forbidden:表示客户端发出的请求没有出错,而是服务器禁止访问资源;
-
【404】Not Found:表示客户端请求的资源在服务器上没有找到;
-
【405】Method Not Allowed:不允许使用某些方法操作资源,当前请求的姿势不对;
-
【408】Request Timeout:请求超时,服务器等待时间过长;
5xx
客户端请求的报文是正确的,但是服务器内部处理时发生错误了;
-
【500】Internal Server Error:服务器发生错误,具体的错误不知道;
-
【501】Not Implemented 表示客户端请求的功能还不支持;
-
【502】Bad Gateway:通常客户端访问的服务器是作为网关或者代理时返回的错误码,表示服务器正常工作,去访问后端服务器时发生错误,不知道具体原因;
-
【503】Service Unaailable:表示服务器当前很忙,暂时无法响应服务器;