计算机网络协议系列 - HTTP 协议篇:HTTP 响应状态码

- 1 min

计算机网络协议系列(三十六)

状态码概述

当目前为止,我们已经介绍完了 HTTP 请求报文起始行的所有元素,第一个是请求方法,第二个是标识请求资源的 URL(一般来说是相对于域名的相对 URL,Web 服务器会将其和请求首部里的 Host 字段组合拼接成完整 URL),第三个是客户端 HTTP 协议的版本,关于报文首部我们放到下一篇统一介绍,现在我们跳到响应报文的起始行,前面已经简单介绍过,响应报文的起始行也由三部分组成,分别是服务器 HTTP 协议的版本,响应状态码以及原因短语,HTTP 协议的版本我们已经讨论过,响应短语主要是响应状态码的可读版本,所以我们重点关注响应状态码。

状态码的职责是当客户端向服务器端发送请求时,描述返回的处理结果,借助状态码,用户可以知道服务器端是正常处理了请求还是出现了错误。

img

状态码由3位数字组成,按照首数字可以将响应分类如下:

img

RFC2616 上记录的 HTTP 状态码有 40 种,再加上 WebDAV(基于万维网的分布式创作和版本控制,RFC49185842)和附加 HTTP 状态码(RFC6585)等扩展,数量达60余种,但常用的大概只有14种。下面我们就常见的状态码进行介绍。

1XX:信息性状态码

信息性状态码日常很少见,主要有如下两个:

img

2XX:成功状态码

2XX 的响应结果表明请求被服务器正常处理了。常见的 2XX 状态码如下所示:

img

3XX:重定向状态码

3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求,比如对请求进行重定向,常见的 3XX 状态码如下所示:

img

注:当 301、302、303 响应状态码返回时,几乎所有浏览器都会把 POST 改成 GET,并删除请求报文内的主体,之后请求会自动再次发送。

4XX:客户端错误状态码

4XX 的响应结果表示客户端是发生错误的原因所在,常见的 4XX 状态码列举如下:

img

5XX:服务器错误状态码

5XX 的响应结果表明服务器本身发生错误,常见的 5XX 状态码如下所示:

img

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora