具有代表性的 HTTP 狀態碼

2XX(Success 成功狀態碼)

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

200 OK

圖片摘取自HTTP圖解

表示從客戶端發來的請求在服務器端被正常處理了

在響應報文內,隨狀態碼一起返回的信息會因方法的不同而發生改變。比如,使用 GET 方法時,對應請求資源的實體會作為響應返回;而使用 HEAD 方法 時,對應請求資源的實體首部不隨報文主體作為響應返回(即在響應中只返回首部,不會返回實體的主體部分)。

204 No Content

圖片摘取自HTTP圖解

該狀態碼代表服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。另外,也不允許返回任何實體的主體。比如,當從瀏覽器發出請求 處理后,返回 204 響應,那么瀏覽器顯示的頁面不發生更新。

一般在只需要從客戶端往服務器發送信息,而對客戶端不需要發送新信息內容的情況下使用

206 Partial Content

圖片摘取自HTTP圖解

該狀態碼表示客戶端進行了范圍請求,而服務器成功執行了這部分的 GET 請求
響應報文中包含由 Content-Range 指定范圍的實體內容

3XX(Redirection 重定向狀態碼)

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

301 Moved Permanently

圖片摘取自HTTP圖解

永久性重定向

該狀態碼表示請求的資源已被分配了新的 URI,以后應使用資源現在所指的 URI。也就是說,如果已經把資源對應的 URI 保存為書簽了,這時應該按 Location 首部字段提示的 URI 重新保存

302 Found

圖片摘取自HTTP圖解

臨時性重定向

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

303 See Other

圖片摘取自HTTP圖解

該狀態碼表示由于請求對應的資源存在著另一個 URI,應使用 GET 方法定向獲取請求的資源。

303 狀態碼和 302 Found 狀態碼有著相同的功能,但 303 狀態碼明確表示客戶端應當采用 GET 方法獲取資源,這點與 302 狀態碼有區別。
比如,當使用 POST 方法訪問 CGI 程序,其執行后的處理結果是希望客戶端能以 GET 方法重定向到另一個 URI 上去時,返回 303 狀態碼。雖然 302 Found 狀態碼也可以實現相同的功能,但這里使用 303 狀態碼是最理想的

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

304 Not Modified

圖片摘取自HTTP圖解

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

附帶條件的請求是指采用 GET 方法的請求報文中包含 If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部

307 Temporary Redirect

臨時重定向。該狀態碼與 302 Found 有著相同的含義。盡管 302 標準禁止 POST 變換成 GET,但實際使用時大家并不遵守

307 會遵照瀏覽器標準,不會從 POST 變成 GET。但是,對于處理響應時的行為,每種瀏覽器有可能出現不同的情況

4XX(Client Error 客戶端錯誤狀態碼)

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

400 Bad Request

圖片摘取自HTTP圖解

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

401 Unauthorized

圖片摘取自HTTP圖解

該狀態碼表示發送的請求需要有通過 HTTP 認證(BASIC 認證、DIGEST 認證)的認證信息。另外若之前已進行過 1 次請求,則表示用 戶認證失敗

返回含有 401 的響應必須包含一個適用于被請求資源的 WWW-Authenticate 首部用以質詢(challenge)用戶信息。當瀏覽器初次接收到 401 響應,會彈出認證用的對話窗口

403 Forbidden

圖片摘取自HTTP圖解

該狀態碼表明對請求資源的訪問被服務器拒絕了。服務器端沒有必要給出拒絕的詳細理由,但如果想作說明的話,可以在實體的主體部分對原因進行描述,這樣就能讓用戶看到了

未獲得文件系統的訪問授權,訪問權限出現某些問題(從未授權的發送源 IP 地址試圖訪問)等列舉的情況都可能是發生 403 的原因

404 Not Found

圖片摘取自HTTP圖解

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

5XX(Server Error 服務器錯誤狀態碼)

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

500 Internal Server Error

圖片摘取自HTTP圖解

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

503 Service Unavailable

圖片摘取自HTTP圖解

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

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

參考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • HTTP狀態碼的分類 HTTP狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,后兩個數字沒有分類的...
    薄涼_簡書閱讀 584評論 0 1
  • 1xx消息 這一類型的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭信...
    Oo晨晨oO閱讀 621評論 0 0
  • API定義規范 本規范設計基于如下使用場景: 請求頻率不是非常高:如果產品的使用周期內請求頻率非常高,建議使用雙通...
    有涯逐無涯閱讀 2,607評論 0 6
  • 我是一個玻璃心的人,別人對我的滴水之恩,我會盡全力去還,也許是他無心的一個舉動,那不重要,重要的是我做了嗎?也許這...
    我的_昵昵稱閱讀 122評論 0 0
  • 涼ryo閱讀 257評論 0 0