HTTP响应状态码是什么
http响应报文由响应头和响应体数据组成,响应头又由状态行和头字段组成,http响应状态码是状态行的组成部分,也是目前状态行里最有用的字段。状态码是一个十进制数字,表示服务器对请求的处理结果,类似程序中函数返回的错误码一样,起到标识的作用。状态码在状态行的位置如下图所示
http响应状态码有哪些
1xx系列
1xx系列是提示信息,标示目前是协议处理的中间状态,后续还有其他操作,在实际生产开发中很少使用。
- 100 (Continue), 100表示到目前为止一切正常,客户端应该继续请求,或者如果请求已经完成,则忽略响应。
- 101 (Switching Protocol),客户端使用Upgrade头字段,指示在http协议的基础上改为其他协议继续通信,如果此时服务器端也同意更改协议,就发送101,改变后续的通信协议。
- 102 (Processing) (WebDAV),102表示服务器端收到并正在处理请求,但是目前没有可用的返回值。
- 103 (Early Hints),103主要用于链接头,让用户代理在服务器准备响应时开始预加载资源。
2xx 系类
2xx系列表示服务器收到并且成功处理了客户端的请求,2xx是客户端开发过程中最愿意看到的状态码。
- 200 (OK),200表示请求已经成功。默认情况下,200响应是可缓存的。200对于不同的请求方式表示含义有一定的差距,但都表示成功。
- 201 (Created),201表示请求成功,并为该次请求创建了一个新的资源。通常用在处理POST请求或一些PUT请求之后的响应
- 202 (Accepted),202表示请求已被接受进行处理,但处理尚未完成,事实上,服务端对该次请求处理可能还没有开始。请求最终可能会被处理,也可能不会被处理,因为在处理实际发生时可能会被拒绝(听起来就很悲惨)。
- 203 (Non-Authoritative Information),203非权威信息响应状态表示请求成功,但包含的有效返回值已被中间代理修改
- 204 (No Content),204表示请求已经成功,但客户端不需要离开当前页面。默认情况下,204响应是可缓存的。一个ETag头包含在这样的响应中。个人习惯用法是作为PUT请求的结果返回204,更新资源,而不改变当前显示给用户的页面内容。如果创建了资源,则返回201 created。如果页面内容有所更改,则应该使用200(以前从来没用过204,上周一个前端大哥说XXXX情况下能不能返回个204,我想返回了你就真的会进行对应的处理吗,感觉to c的前端小伙伴是不是用的多一些,手动Dog)
- 205 (Reset Content), 205告诉客户端重置文档视图,例如清除表单的内容、重置画布状态或刷新UI等等
- 206 (Partial Content),206表示请求已经成功,并返回部分数据(该部分数据范围对应请求头中的range字段,如果只有一个范围,则将整个响应的内容类型设置为文档的类型,并提供内容范围。如果有几个范围被返回,则整个响应的内容类型设置为
multipart/byteranges,每个片段包含一个范围,同时包含内容范围和内容类型两个字段)
3xx系类
3xx表示客户端请求的资源位置发生了变动,客户端需要使用新的URI重新请求,也就是通常所说的“重定向”
- 300 (Multiple Choices), 300表明该请求有多个可能的响应。代理或客户端应该选择其中之一。由于没有标准化的选择方法,300基本上很少很少很少使用
- 301 (Moved Permanently),301表明所请求的资源已被永久移动到给出的URL所代表的位置。浏览器重定向到这个页面,同时搜索引擎更新他们的资源链接,301就是平时所说的永久重定向。
- 302 (Found)表明所请求的资源已暂时移动到由位置头给出的URL所代表的位置。浏览器重定向到这个页面,但是搜索引擎不会更新到这个资源的链接,302就是暂时重定向。
- 303 (See Other),303表明该次重定向不链接到新上传的资源,而是链接到另一个页面(例如确认页)。这个响应代码通常是PUT或POST的结果。用于显示此重定向页面的方法是GET。
- 304 (Not Modified),304表明不需要重传所请求的资源。这是对缓存资源的隐式重定向。当请求方法是安全的(如GET或HEAD请求),或当请求是有条件的并使用if - nonmatch或If-Modified-Since头时,就会发生这种情况,304就是缓存重定向。
- 307 (Temporary Redirect),307表明所请求的资源已被临时移动到由位置头给出的URL。307和302之间的唯一区别是307保证了当重定向请求被提出时方法和主体不会被改变。对于302,一些旧客户端错误地改变了获取的方法:使用非获取方法和302的行为在Web上是不可预测的,而307的行为是可预测的。对于GET请求,它们的行为是相同的。个人理解307是更靠谱的302。
- 308(Permanent Redirect), 308表明所请求的资源已被明确移动到由位置标头给出的URL。浏览器重定向到这个页面,搜索引擎更新到该资源的链接,308是更靠谱的301。
附属说明
下一篇写4xx和5xx系列,文中如有问题,请多多指教,感恩