HTTP 返回碼詳解

2021-08-20 17:25:57 字數 1602 閱讀 8017

200  伺服器成功返回網頁

404  請求的網頁不存在

503  服務不可用

表示臨時響應並需要請求者繼續執行操作的狀態**。

表示成功處理了請求的狀態**。

表示要完成請求,需要進一步操作。 通常,這些狀態**用來重定向。

這些狀態**表示請求可能出錯,妨礙了伺服器的處理。

這些狀態**表示伺服器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是伺服器本身的錯誤,而不是請求出錯。

rfc 6585 最近剛剛發布,該文件描述了 4 個新的 http 狀態碼。

http 協議還在變化?是的,http 協議一直在演變,新的狀態碼對於開發 rest 服務或者說是基於 http 的服務非常有用,下面我們為你詳細介紹這四個新的狀態碼以及是否應該使用。

428 precondition required (要求先決條件)

先決條件是客戶端傳送 http 請求時,如果想要請求能成功必須滿足一些預設的條件。

乙個好的例子就是 if-none-match 頭,經常在 get 請求中使用,如果指定了 if-none-match ,那麼客戶端只在響應中的 etag 改變後才會重新接收回應。

先決條件的另外乙個例子就是 if-match 頭,這個一般用在 put 請求上用於指示只更新沒被改變的資源,這在多個客戶端使用 http 服務時用來防止彼此間不會覆蓋相同內容。

當伺服器端使用 428 precondition required 狀態碼時,表示客戶端必須傳送上述的請求頭才能執行請求,這個方法為伺服器提供一種有效的方法來阻止 'lost update' 問題。

429 too many requests (太多請求)

當你需要限制客戶端請求某個服務數量時,該狀態碼就很有用,也就是請求速度限制。

在此之前,有一些類似的狀態碼,例如 '509 bandwidth limit exceeded'. twitter 使用 420 (這不是http定義的狀態碼)

如果你希望限制客戶端對服務的請求數,可使用 429 狀態碼,同時包含乙個 retry-after 響應頭用於告訴客戶端多長時間後可以再次請求服務。

431 request header fields too large (請求頭欄位太大)

某些情況下,客戶端傳送 http 請求頭會變得很大,那麼伺服器可傳送 431 request header fields too large 來指明該問題。

511 network authentication required (要求網路認證)

對我來說這個狀態碼很有趣,如果你在開發乙個 http 伺服器,你不一定需要處理該狀態碼,但如果你在編寫 http 客戶端,那這個狀態碼就非常重要。

如果你頻繁使用筆記本和智慧型手機,你可能會注意到大量的公用 wifi 服務要求你必須接受一些協議或者必須登入後才能使用。這是通過攔截http流量,當使用者試圖訪問網路返回乙個重定向和登入,這很討厭,但是實際情況就是這樣的。使用這些「攔截」客戶端,會有一些討厭的***。在 rfc 中有提到這兩個的例子:

因此 511 狀態碼的提出就是為了解決這個問題。

如果你正在編寫 http 的客戶端,你最好還是檢查 511 狀態碼以確認是否需要認證後才能訪問。

HTTP 返回碼詳解

404 請求的網頁不存在 503 服務不可用 101 切換協議 請求者已要求伺服器切換協議,伺服器已確認並準備切換。201 已建立 請求成功並且伺服器建立了新的資源。202 已接受 伺服器已接受請求,但尚未處理。203 非授權資訊 伺服器已成功處理了請求,但返回的資訊可能來自另一 204 無內容 伺...

HTTP 返回碼詳解

1xx 臨時響應 表示臨時響應並需要請求者繼續執行操作的狀態 2xx 成功 表示成功處理了請求的狀態 3xx 重定向 表示要完成請求,需要進一步操作。通常,這些狀態 用來重定向。4xx 請求錯誤 這些狀態 表示請求可能出錯,妨礙了伺服器的處理。5xx 伺服器錯誤 這些狀態 表示伺服器在嘗試處理請求時...

HTTP返回碼詳解

1xx 臨時響應 表示臨時響應並需要請求者繼續執行操作的狀態 100 繼續 伺服器等待其他部分。101 切換協議 請求者要求伺服器切換協議,伺服器確認並準備切換 2xx 成功 200 成功 201 已建立 202 伺服器已接受請求尚未處理 203 非授權資訊,伺服器已處理,返回資訊來自其他源 204...