HTTP 狀態碼負責表示客戶端 HTTP 請求的返回結果、標記服務器端的處理是否正常、通知出現的錯誤等工作。
4.1 狀態碼告知從服務器端返回的請求結果
狀態碼 | 類別 | 原因短語 |
---|---|---|
1XX | Informational(信息性狀態碼) | 接收的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 需要進行附加操作以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器無法處理請求 |
5XX | Server Error(服務器錯誤狀態碼) | 服務器處理請求出錯 |
4.2 2XX 成功
2XX 的響應結果表明請求被正常處理了。
- 200 OK:表示從客戶端發來的請求在服務器端被正常處理了。
- 204 No Content:該狀態碼代表服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外,也不允許返回任何實體的主體。
- 206 Partial Content:該狀態碼錶示客戶端進行了範圍請求,而服務器成功執行了這部分的 GET 請求。響應報文中包含由 Content-Range 指定範圍的實體內容。
4.3 3XX 重定向
3XX 響應結果表明瀏覽器需要執行某些特殊的處理以正確處理請求。
- 301 Moved Permanently:永久性重定向。該狀態碼錶示請求的資源已被分配了新的 URI,以後應使用資源現在所指的 URI。也就是說,如果已經把資源對應的 URI 保存爲書籤了,這時應該按 Location 首部字段提示的 URI 重新保存。
- 302 Found:臨時性重定向。該狀態碼錶示請求的資源已被分配了新的 URI,希望用戶(本次)能使用新的 URI 訪問。
- 303 See Other:該狀態碼錶示由於請求對應的資源存在着另一個 URI,應使用 GET 方法定向獲取請求的資源。
- 304 Not Modified:該狀態碼錶示客戶端發送附帶條件的請求時,服務器端允許請求訪問資源,但未滿足條件的情況。 304 狀態碼返回時,不包含任何響應的主體部分。
- 307 Temporary Redirect:臨時重定向。該狀態碼與 302 Found 有着相同的含義。儘管 302 標準禁止 POST 變換成 GET,但實際使用時大家並不遵守。
4.4 4XX 客戶端錯誤
4XX 的響應結果表明客戶端是發生錯誤的原因所在。
- 400 Bad Request:該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次發送請求。另外,瀏覽器會像 200 OK 一樣對待該狀態碼。
- 401 Unauthorized:該狀態碼錶示發送的請求需要有通過 HTTP 認證(BASIC 認證、 DIGEST 認證)的認證信息。另外若之前已進行過 1 次請求,則表示用 戶認證失敗。
- 403 Forbidden:該狀態碼錶明對請求資源的訪問被服務器拒絕了。服務器端沒有必要給出拒絕的詳細理由,但如果想作說明的話,可以在實體的主體部分對原因進行描述,這樣就能讓用戶看到了。
- 4.4.4 404 Not Found:該狀態碼錶明服務器上無法找到請求的資源。除此之外,也可以在服務器端拒絕請求且不想說明理由時使用。
4.5 5XX 服務器錯誤
4.5 5XX 服務器錯誤
- 500 Internal Server Error:該狀態碼錶明服務器端在執行請求時發生了錯誤。也有可能是 Web 應用存在的 bug 或某些臨時的故障。
- 503 Service Unavailable:該狀態碼錶明服務器暫時處於超負載或正在進行停機維護,現在無法處理請求。如果事先得知解除以上狀況需要的時間,最好寫入 RetryAfter 首部字段再返回給客戶端。