HTTP之詳解狀態碼

HTTP狀態碼負責表示客戶端HTTP請求反回的結果、標記服務器端的處理是否正常、通知出現錯誤等工作。由3位數字和原因短語組成。常用的狀態碼有14種。
在這裏插入圖片描述

2XX 成功

2XX的響應結果表明請求被正常處理了。

200 OK:客戶端發來的請求在服務器端被正常處理了。

204 No Content:服務器接收的請求已成功處理,但在返回的響應的報文中不含實體的主體部分。一般在只需要從客戶端往服務器發送信息,而對客戶端不需要發送新信息內容的情況下使用

206 Partial Content:客服端發送了範圍請求,而服務器成功執行了這部分的GET請求。

3XX 重定向

3XX的響應結果表明瀏覽器需要執行某些特殊的處理以正確處理的請求。

301 Moved Permanently:永久性重定向。該狀態碼錶示請求的資源已被分配了新的 URI,以後應使用資源現在所指的 URI。也就是說,如果已經把資源對應的 URI保存爲書籤了,這時應該按 Location 首部字段提示的 URI 重新保存。

302 Found:臨時性重定向。表示請求的資源已被分配了新的 URI,希望用戶(本次)能使用新的 URI 訪問。
和 301 Moved Permanently 狀態碼相似,但 302 狀態碼代表的資源不是被永久移動,只是臨時性質的。換句話說,已移動的資源對應的
URI 將來還有可能發生改變。比如,用戶把 URI 保存成書籤,但不會像 301 狀態碼出現時那樣去更新書籤,而是仍舊保留返回 302 狀態碼的頁面對應的 URI。

303 See Other:表示由於請求對應的資源存在着另一個 URI,應使用 GET方法定向獲取請求的資源。303 狀態碼和 302 Found 狀態碼有着相同的功能,但 303 狀態碼明確
表示客戶端應當採用 GET 方法獲取資源,這點與 302 狀態碼有區別。

304 Not Modified:表示客戶端發送附帶條件的請求 2 時,服務器端允許請求訪
問資源,但未滿足條件的情況。304 狀態碼返回時,不包含任何響應的主體部分。304 雖然被劃分在 3XX 類別中,但是和重定向沒有關係。 2 附帶條件的請求是指採用 GET 方法的請求報文中包含 If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部。

307 Temporary Redirect:禁止 POST 變換成 GET,但實際使用時大家並不遵守。
307 會遵照瀏覽器標準,不會從 POST 變成 GET。但是,對於處理響應時的行爲,每種瀏覽器有可能出現不同的情況。

4XX 客戶端錯誤

4XX 的響應結果表明客戶端是發生錯誤的原因所在。

400 Bad Request:請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次發送請求。另外,瀏覽器會像 200 OK 一樣對待該狀態碼。

401 Unauthorized:該狀態碼錶示發送的請求需要有通過 HTTP 認證(BASIC 認證、 DIGEST 認證)的認證信息。另外若之前已進行過 1 次請求,則表示用 戶認證失敗。
返回含有 401 的響應必須包含一個適用於被請求資源的 WWW-Authenticate 首部用以質詢(challenge)用戶信息。當瀏覽器初次接收到 401 響應,會彈出認證用的對話窗口。

403 Forbidden:對請求資源的訪問被服務器拒絕了。服務器端沒有必要給出拒絕的詳細理由,但如果想作說明的話,可以在實體的主體部分對原因進行描述,這樣就能讓用戶看到了。
未獲得文件系統的訪問授權,訪問權限出現某些問題(從未授權的發送源 IP 地址試圖訪問)等列舉的情況都可能是發生 403 的原因。

404 Not Found:該狀態碼錶明服務器上無法找到請求的資源。除此之外,也可以在服務器端拒絕請求且不想說明理由時使用。

5XX 服務器錯誤

5XX 的響應結果表明服務器本身發生錯誤。

500 Internal Server Error:該狀態碼錶明服務器端在執行請求時發生了錯誤。也有可能是 Web應用存在的 bug 或某些臨時的故障。

503 Service Unavailable:服務器暫時處於超負載或正在進行停機維護,現在無法處理請求。如果事先得知解除以上狀況需要的時間,最好寫入RetryAfter 首部字段再返回給客戶端。

狀態碼和狀況的不一致:不少返回的狀態碼響應都是錯誤的,但是用戶可能察覺不到這點。比如 Web 應用程序內部發生錯誤,狀態碼依然返回 200 OK,這種情況也經常遇到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章