協(xié)議狀態(tài)碼-1XX
Http 協(xié)議根據(jù)場景約定了一系列請求返回的狀態(tài)碼,方便對請求結(jié)果進行細粒度管理。該狀態(tài)碼由互聯(lián)網(wǎng)號碼分配局維護管理。狀態(tài)碼是由3位數(shù)字組成,目前總共分為 5 大類,在接下來的章節(jié)中將逐一詳細介紹。
1. 請求狀態(tài)5大類
- 1xx:消息;
- 2xx:成功;
- 3xx:重定向;
- 4xx:客戶端錯誤;
- 5xx:服務器錯誤。
2. 1xx 狀態(tài)
1xx
表示的是請求還未完成,中間需要跟客戶端協(xié)商信息。
2.1 100 Continue
初始的請求已經(jīng)接受,客戶應當繼續(xù)發(fā)送請求的其余部分。在請求首部字段的小節(jié)中有個 Expect
字段。
Expect: 100-continue
此時,如果服務器愿意接受,就會返回 100 Continue 狀態(tài)碼,反之則返回 417 Expectation Failed 狀態(tài)碼。場景可以用于,請求體比較大又不確定服務的能不能處理,可以先這樣嘗試詢問下,待服務端接收后才發(fā)送正式大請求體。
2.2 101 Switching Protocols
服務器將遵從客戶的請求轉(zhuǎn)換到另外一種協(xié)議。常見的就是 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 協(xié)議升級成 Websocket 協(xié)議。
服務端
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
服務端返回 101 代表協(xié)議轉(zhuǎn)換成功。
2.3 102 Processing
由 WebDAV(RFC 2518)擴展的狀態(tài)碼,代表處理將被繼續(xù)執(zhí)行。跟 100 Continue
狀態(tài)類似,只是 100
的情況會立即返回,而 102
的狀態(tài)則需要等待比較久的時間,規(guī)定一般是超過 20s 以上。