HTTP狀態碼詳解

2021-10-24 22:23:55 字數 3312 閱讀 3540

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

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

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

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

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

(2)201(已建立):請求成功並且伺服器建立了新的資源。

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

(5)204(無內容):伺服器成功處理了請求,但沒有返回任何內容。

(6)205(重置內容):伺服器成功處理了請求,但沒有返回任何內容。與204(無內容)響應不同,此響應要求請求者重置文件檢視(例如清除表單內容以輸入新內容)。

(7)206(部分內容):伺服器成功處理了部分get請求。

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

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

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

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

(4)303(檢視其他位置):請求者應當對不同的位置使用單獨的get請求來檢索響應時,伺服器返回此**。

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

(6)305(使用**):請求者只能使用**訪問請求的網頁。如果伺服器返回此響應,還表示請求者應使用**。

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

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

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

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

(3)403(禁止):伺服器拒絕請求。

(4)404(未找到):伺服器找不到請求的網頁。

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

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

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

(8)408(請求超時):伺服器等候請求時發生超時。

(9)409(衝突):伺服器在完成請求時發生衝突。伺服器必須在響應中包含有關衝突的資訊。

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

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

(12)412(未滿足前提條件):伺服器未滿足請求者在請求中設定的其中乙個前提條件。

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

(15)415(不支援的**型別):請求的格式不受請求頁面的支援。

(16)416(請求範圍不符合要求):如果頁面無法提供請求的範圍,則伺服器會返回此狀態**。

(17)417(未滿足期望值):伺服器未滿足「期望」請求標頭字段的要求。

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

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

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

(3)502(錯誤閘道器):伺服器作為閘道器或**,從上游伺服器收到無效響應。

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

(5)504(閘道器超時):伺服器作為閘道器或**,但是沒有及時從上游伺服器收到請求。

(6)505(http版本不受支援):伺服器不支援請求中所用的http協議版本。

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

(1)428 precondition required(要求先決條件)

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

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

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

當伺服器端使用428(要求先決條件)時,表示客戶端必須傳送上述的請求頭才能執行請求,這個方法為伺服器提供一種有效的方法來阻止"lost update"問題。

(2)429 too many requests(太多請求)

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

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

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

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

某些情況下,客戶端傳送http請求頭會變得很大,那麼伺服器可傳送431(請求頭欄位太大)來指明該問題。

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

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

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

因此511(要求網路認證)的提出就是為了解決這個問題。

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

英文原文:

http狀態碼詳解

200 伺服器成功返回網頁 301 永久移動 請求的網頁已永久移動到新位置。伺服器返回此響應 對 get 或 head 請求的響應 時,會自動將請求者轉到新位置。403 禁止 伺服器拒絕請求 404 請求的網頁不存在 503 服務不可用 常見http狀態碼大全 1xx 臨時響應 表示臨時響應並需要請...

http狀態碼詳解

一 http狀態碼是什麼意思 http狀態碼 英語 http status code 是用以表示網頁伺服器超文字傳輸協議響應狀態的3位數字 它由 rfc 2616 規範定義的,並得到 rfc 2518 rfc 2817 rfc 2295 rfc 2774 與 rfc 4918 等規範擴充套件。所有狀...

HTTP狀態碼詳解

我們在訪問網頁的時候,伺服器會返回 http 狀態 以響應該請求,在這裡給常用的狀態碼進行詳解。狀態碼 說明100 繼續 請求者應繼續進行請求。伺服器返回此 以表示,伺服器已收到某項請求的第一部分,正等待接收剩餘部分。101 切換協議 請求者已要求伺服器切換協議,伺服器已確認並準備進行切換。狀態碼說...