四個新的 HTTP 狀態碼

2021-09-01 06:59:36 字數 1249 閱讀 1857

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

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

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

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

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

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

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

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

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

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

我不太清楚為什麼沒有 430 狀態碼,而是直接從 429 跳到 431,我嘗試搜尋但沒有結果。唯一的猜測是 430 forbidden 跟 403 forbidden 太像了,為了避免混淆才這麼做的,天知道!

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

如果你頻繁使用筆記本和智慧型手機,你可能會注意到大量的公用 wifi 服務要求你必須接受一些協議或者必須登入後才能使用。

這是通過攔截http流量,當使用者試圖訪問網路返回乙個重定向和登入,這很討厭,但是實際情況就是這樣的。

使用這些「攔截」客戶端,會有一些討厭的***。在 rfc 中有提到這兩個的例子:

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

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

HTTP的狀態碼

ajax 在返回的時候,會有http請求的狀態碼 常用的狀態碼主要有 200 ok 成功返回狀態,對應,get,put,patch,delete.201 created 成功建立。304 not modified http快取有效。400 bad request 請求格式錯誤。401 unautho...

HTTP的狀態碼

http的狀態碼有很多種,主要有1xx 臨時響應 2xx 成功 3xx 已重定向 4xx 請求錯誤 以及5xx 伺服器錯誤 五個大類,每個大類還對應一些具體的分類。平時我們接觸比較多的是200 400 500等。這裡我們主要討論一下狀態碼204,在http rfc 2616中關於204的描述如下 意...

10個常見的HTTP狀態碼

目錄 http狀態碼是用以表示網頁伺服器http響應狀態的3位數字 所有狀態碼的第乙個數字代表了響應的五種狀態之一。當使用者試圖通過http或ftp協議訪問一台執行主機上的內容時,web伺服器返回乙個表示該請求的狀態的數字 該狀態 記錄在伺服器日誌中,同時也可能在 web 瀏覽器或 ftp客戶端顯示...