狀態碼的作用就是描述返回的請求結果。

狀態碼由 3 位數字和原因短語組成,如 200 OK 數字第一位指響應型別,後兩位無分類。

code 類別 原因短語
1XX Informational(資訊性狀態碼) 接收的請求正在處理
2XX Success(成功狀態碼) 正常處理完畢
3XX Redirection(重定向狀態碼) 需要進行附加操作以完成請求
4XX Client Error(客戶端錯誤狀態碼) 伺服器無法處理請求
5XX Server Error(伺服器錯誤狀態碼) 伺服器處理請求錯誤
2XX

200 OK

客戶端發來的請求在伺服器被正常處理了。

204 No Content

該狀態碼代表伺服器接收的請求已成功處理,但返回的響應報文中不含實體的主體部分。 (請求處理成功,但沒有資源可返回)

206 Partial(部分) Content

範圍請求,伺服器成功執行了部分 GET 請求。 (類似斷點續傳,把一個 10000 位元組的資源分詞下載下來)

響應報文中包含由 Content-Range 指定範圍的實體內容。

執行範圍請求時,會用首部欄位 Range 來制定資源的 byte 範圍,形式如下:

<code>//5001~10000 位元組
Range:bytes=5001-10000

//5001 位元組之後的全部

Range:bytes=5001-

//從一開始到 3000 位元組和 5000~7000 位元組的多重範圍

Range:bytes=-3000, 5000-700
</code>

對於多重範圍的範圍請求,響應會在首部欄位 Content-Type 標明 multipart/byteranges 後返回響應報文。

如果伺服器無法響應範圍請求,則會返回狀態碼 200 OK 和完整的實體內容

3XX

301 Moved Permanently

永久性重定向,請求的資源已被分配了新的 URI 。

302 Found

臨時性重定向,臨時被定位到其他位置。

303 See Other

303 狀態碼和 302 功能相同,但 303 明確表示客戶端應採用 GET 方法獲取資源,這點和 302 不同。

當 301 、 302 、 303 響應狀態碼返回時,幾乎所有的瀏覽器都會把 POST 改成 GET,並刪除請求報文內的主體,之後請求會自動再次傳送。

304 Not Modified

客戶端傳送附帶條件的請求時,伺服器端允許請求訪問資源,但未滿足條件。

附帶條件的請求指,採用 GET 放的的請求報文中包含 If-Match 、 If-Modified-Since 、 If-None-Match 、 If-Range 、 If-Unmodified-Since 中任一首部。

307 Temporary Redirect

臨時重定向,與 302 類似。

4XX

400 Bad Request

請求報文中存在語法錯誤。瀏覽器會像 200 OK 一樣對待該狀態碼。

401 Unauthorized

傳送的請求需要有透過 HTTP 認證 (BASIC 認證、 DIGEST 認證) 的認證資訊。

如果之前已進行過一次請求,則表示使用者認證失敗。

返回含有 401 的響應必須包含一個適用於被請求資源的 WWW Authenticate 首部用以質詢 (challenge) 使用者資訊。瀏覽器接收刅 401,會彈出認證用的對話視窗。

403 Forbidden

對請求資源的訪問被伺服器拒絕了。

未獲得穩健系統的訪問授權,訪問許可權出問題 (從未授權的傳送源 IP 地址檢視訪問) 都有可能。

伺服器想對拒絕理由進行說明的話,可以在實體的主體部分對原因進行描述。

404 Not Found

無法找到請求的資源,也可能是伺服器拒絕請求且不想說明理由。

5XX

500 Internal Server Error

伺服器執行請求時發生錯誤,可能是應用 BUG 或臨時故障。

503 Service Unavailable

伺服器暫時處於超負載或正在進行停機維護,現在無法處理請求。

可寫入 Retry After 首部欄位返回給客戶端。

涉及的知識點:

MIME(Multipurpose Internet Mail Extensions) 多用途引體網郵件擴充套件機制。

WebDAV(Web-based Distributed Authoring and Versioning) 基於全球資訊網的分散式創作和版本控制 (RFC4918 5842)

附加 HTTP 狀態碼 (RFC6585)