整理HTTP 狀態碼

HTTP狀態碼詳解

當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的服務器會返回一個包含HTTP狀態碼的信息頭(server header)用以響應瀏覽器的請求。

HTTP狀態碼的英文為HTTP Status Code。

下面是常見的HTTP狀態碼:

  • 200 – 請求成功
  • 301 – 資源(網頁等)被永久轉移到其它URL
  • 404 – 請求的資源(網頁等)不存在
  • 500 – 內部服務器錯誤

HTTP 狀態代碼表示什麼意思?

HTTP 狀態碼(英語:HTTP Status Code)是用以表示 HTTP 響應狀態的 3 位數字代碼。比如:

  • 1xx:消息
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客戶端錯誤
  • 5xx:服務器錯誤

熟記這些狀態碼可以讓我們在快速定位 Web 開發中遇到的問題、編寫符合規范的接口服務,那麼下面就讓我們看看這些死板的 3 位數字都是什麼意思。

HTTP狀態碼分類

HTTP狀態碼由三個十進制數字組成,第一個十進制數字定義瞭狀態碼的類型,後兩個數字沒有分類的作用。HTTP狀態碼共分為5種類型:

1開頭(信息響應)

1xx(臨時響應):信息性狀態碼,表示服務器已接收瞭客戶端請求,客戶端可繼續發送請求。

1xx(臨時響應)表示臨時響應並需要請求者繼續執行操作的狀態代碼。代碼 說明

100 (繼續) 請求者應當繼續提出請求。 服務器返回此代碼表示已收到請求的第一部分,正在等待其餘部分。

101 (切換協議) 請求者已要求服務器切換協議,服務器已確認並準備切換。

2開頭(成功響應)

2xx (成功)表示成功處理瞭請求的狀態代碼。代碼 說明

200 (成功) 服務器已成功處理瞭請求。 通常,這表示服務器提供瞭請求的網頁。

201 (已創建) 請求成功並且服務器創建瞭新的資源。

202 (已接受) 服務器已接受請求,但尚未處理。

203 (非授權信息) 服務器已成功處理瞭請求,但返回的信息可能來自另一來源。

204 (無內容) 服務器成功處理瞭請求,但沒有返回任何內容。

205 (重置內容) 服務器成功處理瞭請求,但沒有返回任何內容。

206 (部分內容) 服務器成功處理瞭部分 GET 請求。

3開頭(重定向)

3xx (重定向) 表示要完成請求,需要進一步操作。 通常,這些狀態代碼用來重定向。

300 (多種選擇) 針對請求,服務器可執行多種操作。 服務器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。

301 (永久移動) 請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。

302 (臨時移動) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。

304 (未修改) 自從上次請求後,請求的網頁未修改過。 服務器返回此響應時,不會返回網頁內容。

305 (使用代理) 請求者隻能使用代理訪問請求的網頁。 如果服務器返回此響應,還表示請求者應使用代理。

307 (臨時重定向) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

4開頭(客戶端響應)

4xx(請求錯誤) 這些狀態代碼表示請求可能出錯,妨礙瞭服務器的處理。代碼 說明

400 (錯誤請求) 服務器不理解請求的語法。

401 (未授權) 請求要求身份驗證。 對於需要登錄的網頁,服務器可能返回此響應。

403 (禁止) 服務器拒絕請求。

404 (未找到) 服務器找不到請求的網頁。

405 (方法禁用) 禁用請求中指定的方法。

406 (不接受) 無法使用請求的內容特性響應請求的網頁。

407 (需要代理授權) 此狀態代碼與 401(未授權)類似,但指定請求者應當授權使用代理。

408 (請求超時) 服務器等候請求時發生超時。

409 (沖突) 服務器在完成請求時發生沖突。 服務器必須在響應中包含有關沖突的信息。

410 (已刪除) 如果請求的資源已永久刪除,服務器就會返回此響應。

411 (需要有效長度) 服務器不接受不含有效內容長度標頭字段的請求。

412 (未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。

413 (請求實體過大) 服務器無法處理請求,因為請求實體過大,超出服務器的處理能力。

414 (請求的 URI 過長) 請求的 URI(通常為網址)過長,服務器無法處理。

415 (不支持的媒體類型) 請求的格式不受請求頁面的支持。

416 (請求范圍不符合要求) 如果頁面無法提供請求的范圍,則服務器會返回此狀態代碼。

417 (未滿足期望值) 服務器未滿足"期望"請求標頭字段的要求。

5開頭(服務端響應)

5xx(服務器錯誤)這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是服務器本身的錯誤,而不是請求出錯。代碼 說明

500 (服務器內部錯誤) 服務器遇到錯誤,無法完成請求。

501 (尚未實施) 服務器不具備完成請求的功能。 例如,服務器無法識別請求方法時可能會返回此代碼。

502 (錯誤網關) 服務器作為網關或代理,從上遊服務器收到無效響應。

503 (服務不可用) 服務器目前無法使用(由於超載或停機維護)。 通常,這隻是暫時狀態。

504 (網關超時) 服務器作為網關或代理,但是沒有及時從上遊服務器收到請求。

505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協議版本。

趣味圖解HTTP狀態碼的含義

來源:雲技術實踐  時間:2018/11/28 10:09:18  對本文有異議

HTTP狀態碼(HTTP Status Code)是用以表示網頁服務器HTTP響應狀態的3位數字代碼。我們可以通過查看HTTP狀態碼來判斷服務器狀態,常見的有404 、502等;但是其他不是很常見的狀態碼都代表什麼狀態呢?下面有兩張有趣的圖片,讓你瞬間都能理解瞭。HTTP狀態碼(圖一)

  • 301—永久移動。被請求的資源已被永久移動位置;
  • 302—請求的資源現在臨時從不同的 URI 響應請求;
  • 305—使用代理。被請求的資源必須通過指定的代理才能被訪問;
  • 307—臨時跳轉。被請求的資源在臨時從不同的URL響應請求;
  • 400—錯誤請求;
  • 402—需要付款。該狀態碼是為瞭將來可能的需求而預留的,用於一些數字貨幣或者是微支付;
  • 403—禁止訪問。服務器已經理解請求,但是拒絕執行它;
  • 404—找不到對象。請求失敗,資源不存在;
  • 406—不可接受的。請求的資源的內容特性無法滿足請求頭中的條件,因而無法生成響應實體;

HTTP狀態碼(圖二)

  • 408—請求超時;
  • 409—沖突。由於和被請求的資源的當前狀態之間存在沖突,請求無法完成;
  • 410—遺失的。被請求的資源在服務器上已經不再可用,而且沒有任何已知的轉發地址;
  • 413—響應實體太大。服務器拒絕處理當前請求,請求超過服務器所能處理和允許的最大值。
  • 417—期望失敗。在請求頭 Expect 中指定的預期內容無法被服務器滿足;
  • 418—我是一個茶壺。超文本咖啡罐控制協議,但是並沒有被實際的HTTP服務器實現;
  • 420—方法失效。
  • 422—不可處理的實體。請求格式正確,但是由於含有語義錯誤,無法響應;
  • 500—服務器內部錯誤。服務器遇到瞭一個未曾預料的狀況,導致瞭它無法完成對請求的處理;

“404”

最無恥的 HTTP 常用狀態碼圖解

之前有朋友發過一篇 HTTP 狀態碼大全,我補充一篇,也是網上偶然看見的圖,覺得雖然很沒有節操但是卻很形象生動,分享出來共 High

301 永久移動位置,被請求的資源已經被永久性的轉移瞭位置 302 您請求的資源現在需要臨時通過其他的 URI 來獲取 305 使用代理,被請求的資源必須通過指定的代理才能訪問到 307 臨時跳轉。被請求的資源在臨時從不同的URL響應請求 400 請求錯誤 402 該狀態碼是為瞭將來可能的需求而預留的,比如可能用於一些數字貨幣或者是微支付 403 禁止訪問。服務器已經理解請求,但是拒絕執行它 404 找不到對象。請求失敗,資源不存在,程序員找對象簡直是宇宙謎題 406 不可接受的。請求的資源的內容特性無法滿足請求頭中的條件,因而無法生成響應實體

408 請求超時,請活活憋死吧 409 請求沖突。由於和被請求的資源的當前狀態之間存在沖突,請求無法完成 410 遺失的。被請求的資源在服務器上已經不再可用,而且沒有任何已知的轉發地址 413 響應實體太大。服務器拒絕處理當前請求,請求超過服務器所能處理和允許的最大值 417 期望失敗。在請求頭 Expect 中指定的預期內容無法被服務器滿足 418 我是一個茶壺。超文本咖啡罐控制協議,但是並沒有被實際的HTTP服務器實現 420 方法失效 422 不可處理的實體。請求格式正確,但是由於含有語義錯誤,無法響應 500 服務器內部錯誤。服務器遇到瞭一個未曾預料的狀況,導致瞭它無法完成對請求的處理

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

HTTP狀態碼是幹什麼的?HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記服務器的處理是否正常、通知出現的錯誤等工作。狀態碼告知從服務器端返回的請求結果狀態碼的職責是當客戶端向服務端發送請求時,描述返回的請求結果。借助狀態嗎,用戶可以知道服務器端是正常處理瞭請求,還是出現瞭錯誤。

狀態碼的類別

類別原因短語

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 這種情況也經常遇到。

擼貓患者/喜歡喵星人可以參考以下文章

MDN官方鏈接:

2XX狀態解釋

赞(0)