大话HTTP状态码

大话HTTP状态码

大话HTTP状态码

http


HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。接下来,我们一起来看看,状态码的工作机制。

1. 状态码的作用

告知从服务器返回的请求结果:状态码的职责所在是客户端向服务端发送请求时,描述返回的请求结果。

借助状态码,开发者可以知道服务端是否正常处理了请求,乃至根据返回的状态码帮助定位到错误原因。

状态码如200OK,以3位数字和原因短语组成

数字的第一位制定了响应类型,后两位五分类。响应类别有以下

类别原因短语
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)。请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错

大部分返回的状态码服务器都可以根据类别先定义好第一位,后2位甚至可以约定好规则-自由发挥。

2. 2XX 成功

2XX的响应结果表明请求被正常处理了。

典型的200 ok表示从客户端发来的请求在服务器被正常处理了。

204 Not Content表示请求处理成功,但是没有资源返回。

3. 3XX 重定向

3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理。

301 Moved Permanently永久性重定向。该状态码表示请求的资源已经分配了新的URI(统一资源标识符),以后应该使用资源现在所指的URI。 302 Found临时性重定向。它的性质和301很相似,但是302状态码代表的知识资源只是被临时性移动。 303 See Other表示由请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。303302多的就是指示了客户端改换用GET方法去请求资源。

当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改成GET(我就在这里遇到过坑,提交的post请求报文主体内的参数因为被改成get方法,丢失了请求报文的主体。),并删除请求报文内的主体,之后请求会自动再次发送。 301、302标准是禁止将POST方法变成GET方法的,但实际使用时浏览器厂商都会这么做。

304 Not Modified资源已找到,但未符合请求条件。304虽然被划分在3XX类别中,但是和重定向没有关系,它代表客户端发送附带请求报文首部条件的请求时,服务端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304(服务端资源未改变,可直接使用客户端未过期的缓存),返回时不包含任何响应的主体部分。

307 Temporary Redirect临时重定向。改状态码与302Found有着同样的含义,浏览器会遵照207标准,不会从POST变成GET。

4. 4XX 客户端错误

4XX的响应结果表明客户端是发生错误的原因所在。

400 Bad Request请求报文中存在语法错误。

401 Unauthorized表示发送的请求需要有通过HTTP认真的认证信息。另外若之前已进行了一次请求,则表示用户认证失败


回复列表



回复操作






发布时间:2016-12-30 18:08:10

修改时间:2016-12-30 18:08:10

查看次数:523

评论次数:2

TA的文章总数

37