0%

HTTP的正确响应码(For Reference)

100,200,300系列表示成功的响应码

  • 响应码规范:RFC6585(2012.4)、RFC7231(2014.6)
  • 1xx:请求已接收到,需要进一步处理才能完成,HTTP1.0不支持
    • 100 Continue:上传大文件前使用
      • 由客户端发起请求中携带Expect 100-continue头部触发
    • 101 Switch Protocols:协议升级使用
      • 由客户端发起请求中携带Upgrade:头部触发,如升级websocket或者http/2.0
    • 102 Processing:WebDAV请求可能包含许多涉及文件操作的子请求,需要很长时间才能完成请求。该代码表示服务器已经收到并正在处理请求,但无响应可用。这样可以防止客户端超时,并假设请求丢失
  • 2xx:成功处理请求
    • 200 OK:成功返回了响应
    • 201 Created:有新资源在服务器端被成功创建
    • 202 Accepted:服务端接受并开始处理请求;但请求未处理完成。这样一个模糊的概念是有意如此设计,可以覆盖更多的场景。例如异步、需要长时间处理的任务。先给客户端返回202 Accept,而由异步的任务继续去处理这个任务。
    • 203 Non-Authoritative Information:当代理服务器修改了origin server的原始响应包体时(例如更换了HTML中的元素值),代理服务器可以通过修改200为203的方式告知客户端这一事实,方便客户端为这一行为做出相应的处理。203响应可以被缓存。203这个规范并不被广为接受。
    • 204 No Content:成功执行了请求且不携带响应包体,并暗示客户端无需更新当前的页面视图。(常见与我们用put等方法post等方法上传了一些资源但是返回的响应告诉不需要去刷新当前的URI等。)
    • 205 Reset Content:成功执行了请求且不携带响应包体,同时指明客户端需要更新当前页面视图。(比如说URI画图等,可能会遇到)
    • 206 Partial Content:(多线程断点续传下载都会使用到range协议)使用range协议时返回部分响应内容时的响应码
    • 207 Multi-Status:RFC4918,在WEBDAV协议中以XML返回多个资源的状态。(返回目录树的结构的时候,实际上是返回了很多个子目录及其相关的资源描述,那么这个时候我们其实有很多个响应码,那么207就是把这些响应作为一个响应的时候,那么这个响应码我们告诉客户端是207)
    • 208 Already Reported:RFC5842,为避免相同集合下资源在207响应码下重复上报,使用208可以使用父集合的响应码。
  • 3xx:重定向使用Location指向的资源或者缓存中的资源。在RFC2068中规定客户端重定向次数不应超过5次,以防止死循环。
    • 300 Multiple Choices:资源有多种表述,通过300返回给客户端后其自行选择访问哪一种表述。由于缺乏明确的细节,300很少使用。
    • 301 Moved Permanently:资源永久性的重定向到另一个URL中。(浏览器可以对永久性的重定向直接缓存)
    • 302 Found:资源临时的重定向到另一个URL中。
    • 303 See Other:重定向到其他资源,常用语POST/PUT等方法的响应中。
    • 304 Not Modified:当客户端拥有可能过期的缓存时,会携带缓存的标识etag、时间等信息询问服务器缓存是否仍可复用,而304是告诉客户端可以复用缓存。
    • 307 Temporary Redirect:类似302,但明确重定向后请求方法必须与原请求方法相同,不得改变。
    • 308 Permanent Redirect:类似301,但明确重定向后请求方法必须与原请求方法相同,不得改变。

参考

陶辉老师的Web协议详解与抓包实战课程