代理ip服務器的HTTP狀態碼有:1、428狀態碼,表示客戶端必須發送對應的請求頭才能執行請求操作,能有效阻止 lost update問題的出現;2、429狀態碼,表示限制客戶端對服務的請求數,同時包含客戶端多長時間后可以再次請求服務;3、431狀態碼,表示指明請求頭問題,如客戶端發送HTTP請求頭過大,服務器可以發送431狀態碼;4、511狀態碼,在編寫HTTP客戶端時,能解決客戶端解析錯誤并導致客戶端運行異常的問題。
具體內容如下:
1、428 Precondition Required
先決條件是客戶端發送 HTTP 請求時,必須要滿足的一些預設條件。一個好的例子就是 If-None-Match 頭,經常用在 GET 請求中。如果指定了 If-None-Match ,那么客戶端只在響應中的 ETag 改變后才會重新接收回應。
先決條件的另外一個例子是 If-Match 頭,一般用在 PUT 請求上,用于指示只更新但沒有被改變的資源。這在多個客戶端使用 HTTP 服務時用來防止彼此間覆蓋相同內容的情況。當服務器端使用 428 Precondition Required 狀態碼時,表示客戶端必須發送上述的請求頭才能執行該請求操作。這個方法為服務器提供一種有效的方法來阻止 “lost update”問題的出現。
2、429 Too Many Requests
當你需要限制客戶端請求某個服務的數量,也就是限制請求速度時,該狀態碼就會非常有用。在此之前,有一些類似的狀態碼。例如“509 Bandwidth Limit Exceeded”。如果你希望限制客戶端對服務的請求數,可使用 429 狀態碼,同時包含一個 Retry-After 響應頭用于告訴客戶端多長時間后可以再次請求服務。
3、431 Request Header Fields Too Large
某些情況下,客戶端發送 HTTP 請求頭會變得很大,那么服務器可發送 431 Request Header Fields Too Large 來指明該問題。IP代理服務器軟件我不太清楚為什么沒有 430 狀態碼,而是直接從 429 跳到 431,我嘗試搜索但沒有結果。唯一的猜測是 430 Forbidden 跟 403 Forbidden 太像了,為了避免混淆才這么做的。
4、511 Network Authentication Required
對我來說這個狀態碼很有趣,如果你在開發一個 HTTP 服務器,你不一定需要處理該狀態碼,但如果你在編寫 HTTP 客戶端,那這個狀態碼就非常重要。如果你頻繁使用筆記本和智能手機,你可能會注意到大量的公用 Wifi 服務要求你必須接受一些協議或者必須登錄后才能使用,這是通過攔截HTTP流量實現的。當用戶試圖訪問網絡返回一個重定向和登錄,這很討厭,但是實際情況就是這樣的。
使用這些“攔截”客戶端,會有一些討厭的副作用。
如果你在登錄Wifi前訪問某個網站,網絡設備將會攔截首個請求,這些設備往往也有自己的網站圖標“favicon.ico”。登錄后你會發現,有一段時間內你訪問的網站圖標一直是Wifi登錄網站的圖標。
如果客戶端使用HTTP請求來查找文檔,網絡將會響應一個登錄頁,這樣你的客戶端就會解析錯誤并導致客戶端運行異常,在現實中這種問題非常常見。而 511 狀態碼的提出就是為了解決這個問題。因此,如果你正在編寫 HTTP 的客戶端,你最好還是檢查 511 狀態碼以確認是否需要認證后才能訪問。