昨天参加百度视频的实习生面试,一面的面试官师兄问我HTTP状态码2、3、4、5开头分别代表什么意思?我没答上来,只是简单的说了200、301代表的意思,感觉很遗憾。作为一个想要投身于互联网行业的开发人员来说,对于服务器返回的HTTP状态的意思必须了如指掌,也只有将这些状态吗一一弄清楚,工作中遇到的各种问题才能处理的得心应手。
首先我们需要了解的是什么是HTTP状态码(HTTP Status Code)?
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。下面是我通过wireshark抓包工具抓的HTTP报文,红色标记的圆框里HTTP/1.1 200 OK为服务器响应的信息,其中200就是HTTP状态码,而OK表示200状态所对应的英文描述。再往前两个记录我们可以找到GET / HTTP/1.1 这个其实就是客户端像服务器发起的请求。
下面是HTTP状态码的相关总结:
1字开头(消息)
这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。
100 Continue 客户端应当继续发送请求101 Switching Protocols 服务器已经理解了请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。
102 Processing 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
2字开头(请求成功,表示服务器成功处理了请求的状态码)
200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。
201 Created 请求成功并且服务器创建了新资源。
202 Accepted 服务器已接受请求,但尚未处理。
203 Non-Authoritative Information 服务器已处理了请求,但返回信息可能来自另一源。
204 No Content 服务器成功处理了请求,但是没有返回任何内容。
205 Reset Content 服务器成功处理了请求,且没有返回任何内容。
206 Partial Content 服务器已经成功处理了部分 GET 请求。
207 Multi-Status 由WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息。
3字开头(请求被重定向,表示要完成请求,还需进一步操作)300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,用户或浏览器能够自行选择一个首选的地址进行重定向。
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Move temporarily 请求的资源临时从不同的 URI响应请求。
303 See Other 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304 Not Modified 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 Use Proxy 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
306 Switch Proxy 在最新版的规范中,306状态码已经不再被使用。
307 Temporary Redirect 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
4字开头(请求错误,这些状态码表示请求可能出错,妨碍了服务器的处理)400 Bad Request 服务器不理解请求的语法。
401 Unauthorized 当前请求需要用户验证。
402 Payment Required 该状态码是为了将来可能的需求而预留的。
403 Forbidden 服务器已经理解请求,但是拒绝执行它。
404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现。
405 Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源。
406 Not Acceptable 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
407 Proxy Authentication Required 与401响应类似,只不过客户端必须在代理服务器上进行身份验证。
408 Request Timeout 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。
409 Conflict 由于和被请求的资源的当前状态之间存在冲突,请求无法完成
410 Gone 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
411 Length Required 服务器拒绝在没有定义 Content-Length 头的情况下接受请求。
412 Precondition Failed 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
413 Request Entity Too Large 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 Request-URI Too Long 请求的URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。
415 Unsupported Media Type 请求的格式不受请求页面的支持。
416 Requested Range Not Satisfiable 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417 Expectation Failed 服务器未满足"期望"请求标头字段的要求。
421 There are too many connections from your internet address 从该IP到服务器的连接数超过了服务器许可的最大范围。
422 Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)
423 Locked 当前资源被锁定。(RFC 4918 WebDAV)
424 Failed Dependency 由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV)
425 Unordered Collection 在WebDav Advanced Collections 草案中定义
426 Upgrade Required 客户端应当切换到TLS/1.0。(RFC 2817)
449 Retry With 由微软扩展,代表请求应当在执行完适当的操作后进行重试。
451 Unavailable For Legal Reasons 该请求因法律原因不可用。(RFC 7725)
5、6字开头(服务器错误,这些状态代码表示服务器在尝试处理请求时发生内部错误。)500 Internal Server Error 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
501 Not Implemented 当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求。
504 Gateway Timeout服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 HTTP Version Not Supported 服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。
506 Variant Also Negotiates 由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误
507 Insufficient Storage 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
509 Bandwidth Limit Exceeded 服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
510 Not Extended 获取资源所需要的策略并没有没满足。(RFC 2774)
600 Unparseable Response Headers 源站没有返回响应头部,只返回实体内容
更详细的信息如下:
可以参考百度百科https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81?fr=aladdin
或者直接RFC 2616文档
(完)
发表评论: