协议状态码-1XX

Http 协议根据场景约定了一系列请求返回的状态码,方便对请求结果进行细粒度管理。该状态码由互联网号码分配局维护管理。状态码是由3位数字组成,目前总共分为 5 大类,在接下来的章节中将逐一详细介绍。

1. 请求状态5大类

  • 1xx:消息;
  • 2xx:成功;
  • 3xx:重定向;
  • 4xx:客户端错误;
  • 5xx:服务器错误。

2. 1xx 状态

1xx 表示的是请求还未完成,中间需要跟客户端协商信息。

2.1 100 Continue

初始的请求已经接受,客户应当继续发送请求的其余部分。在请求首部字段的小节中有个 Expect 字段。

Expect: 100-continue

此时,如果服务器愿意接受,就会返回 100 Continue 状态码,反之则返回 417 Expectation Failed 状态码。场景可以用于,请求体比较大又不确定服务的能不能处理,可以先这样尝试询问下,待服务端接收后才发送正式大请求体。

2.2 101 Switching Protocols

服务器将遵从客户的请求转换到另外一种协议。常见的就是 Websocket 连接。
客户端

GET /websocket HTTP/1.1
Host: www.imocc.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

客户端请求要将原本是 HTTP/1.1 协议升级成 Websocket 协议。
服务端

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade

服务端返回 101 代表协议转换成功。

2.3 102 Processing

由 WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。跟 100 Continue 状态类似,只是 100的情况会立即返回,而 102的状态则需要等待比较久的时间,规定一般是超过 20s 以上。