一文牢記HTTP狀態碼(圖解HTTP狀態碼)

HTTP狀態碼是幹什麼的?

HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記服務器的處理是否正常、通知出現的錯誤等工作。

狀態碼告知從服務器端返回的請求結果

狀態碼的職責是當客戶端向服務端發送請求時,描述返回的請求結果。
藉助狀態嗎,用戶可以知道服務器端是正常處理了請求,還是出現了錯誤。
在這裏插入圖片描述

狀態碼的類別

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

2XX 成功狀態碼詳述

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

200 OK

在這裏插入圖片描述
表示從客戶端發來的請求在服務端被正常處理了。
在響應報文內,隨狀態碼一起返回的信息會因方法的不同而發生改變。比如,使用GET方法時,對應請求資源的實體會做爲響應返回;而使用HEAD方法時,對應請求資源的實體首部不隨報文主體作爲響應返回(即在響應中只返回首部,不會返回時主體部分)。

204 NoContent

在這裏插入圖片描述
該狀態碼代表服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外,也不允許返回任何實體的主體。比如,當從瀏覽器發出請求處理後,返回204響應,那麼瀏覽器顯示的頁面不發生更新。
一般在只需要從客戶端往服務器發送信息,而對客戶端不需要發送新信息內容的情況下使用。

206 Partial Content

在這裏插入圖片描述
該狀態碼錶示服務端進行了範圍請求,而服務器成功執行了這部分的GET請求。響應報文中包含Content-Range制定範圍的實體內容。

3XX 重定向

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

301 Moved Permanently

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

302 Found

在這裏插入圖片描述
臨時重定向。該狀態碼錶示請求的資源已被分配了新的URI,希望用戶(本次)能使用新的URI訪問。
和301狀態碼相似,但302狀態碼代表的資源不是被永久移動,只是臨時性質的。換句話說,已移動的資源對應的URI將來還有可能會發生改變。

303 See Other

在這裏插入圖片描述
該狀態碼錶示由於請求對應的資源存在着另一個URI,應使用GET方法定向獲取請求的資源。
303狀態碼和302狀態碼有着相同的功能,但303狀態碼明確表示客戶端應採用GET方法獲取資源,這點與302狀態碼有區別。

301,302,303之間的聯繫

當301、302、303響應狀態碼返回時,幾乎所有的瀏覽器都會把POST改成GET,並刪除請求報文內的主體,之後請求會自動再次發送。
301,302標準是禁止將POST方法改變成FET方法,但實際使用時大家都會這麼做。

304 Not Modified

在這裏插入圖片描述
該狀態碼錶示客戶端發送附帶條件的請求時,服務器允許請求訪問資源,但未滿足條件的情況。
304狀態碼返回時,不包含任何響應的主體部分。304雖然被劃分在3XX類別中,但是和重定向沒有關係。

307 Temporary Redirect

臨時重定向。該狀態碼與302有着相同的含義。儘管302標準禁止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 這種情況也經常遇到。

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