HTTP協議響應狀態碼(301、302、303的區別)

~斌發表於2020-12-24

1xx(臨時響應)

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

100 (繼續) 請求者應當繼續提出請求。 伺服器返回此程式碼表示已收到請求的第一部分,正在等待其餘部分。
101 (切換協議) 請求者已要求伺服器切換協議,伺服器已確認並準備切換。

2xx (成功)

表示成功處理了請求的狀態程式碼。

200 (成功) 伺服器已成功處理了請求。 通常,這表示伺服器提供了請求的網頁。
201 (已建立) 請求成功並且伺服器建立了新的資源。
202 (已接受) 伺服器已接受請求,但尚未處理。
203 (非授權資訊) 伺服器已成功處理了請求,但返回的資訊可能來自另一來源。
204 (無內容) 伺服器成功處理了請求,但沒有返回任何內容。
205 (重置內容) 伺服器成功處理了請求,但沒有返回任何內容。
206 (部分內容) 伺服器成功處理了部分 GET 請求。

3XX(重定向)

HTTP狀態碼3XX表示重定向,表明瀏覽器需要執行某些特殊的處理以正確處理請求。

301 Moved Permanently

永久性定向。該狀態碼錶示請求的資源已被分配了新的URI,以後應使用資源現在所指的URI。

302 Found

臨時性重定向。該狀態碼錶示請求的資源已被分配了新的URI,希望使用者(本次)能使用新的URI訪問。和301相似,但302表示的資源不是永久移動,只是臨時性的。

303 See Other

該狀態碼錶示由於請求對應的資源存在著另一個URI,應使用GET方法定向獲取請求的資源, 303和302狀態碼有著相同的功能,但是303明確表示客戶端應當採用get方法獲取資源,這點與302狀態碼有區別。
比如,當使用post方法訪問CGI程式,其執行後的處理結果為希望客戶端能以get方法重定向到另一個uri上去時,返回303狀態碼。雖然302也可實現相同的功能,但這裡使用302狀態碼是最理想的。

當301、302、303響應狀態碼返回時,幾乎所有瀏覽器都會把post改成get,並刪除請求報文內的主體,之後請求會自動再次傳送。

301、302標準是禁止將post方法改變成get方法的,但實際使用時大家都會這麼做。

307 Temporary Redirect
臨時重定向。該狀態碼與302有相同的含義。儘管302標準禁止post變化get,但實際使用時大家不遵守。
307會遵照瀏覽器標準,不會從post變為get。但是對於處理響應時的行為,各種瀏覽器有可能出現不同的情況。

304 (未修改)

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

305 (使用代理)

請求者只能使用代理訪問請求的網頁。 如果伺服器返回此響應,還表示請求者應使用代理。

4xx(請求錯誤)

這些狀態程式碼表示請求可能出錯,妨礙了伺服器的處理。
400 (錯誤請求) 伺服器不理解請求的語法。
401 (未授權) 請求要求身份驗證。 對於需要登入的網頁,伺服器可能返回此響應。
403 (禁止) 伺服器拒絕請求。
404 (未找到) 伺服器找不到請求的網頁。
405 (方法禁用) 禁用請求中指定的方法。
406 (不接受) 無法使用請求的內容特性響應請求的網頁。
407 (需要代理授權) 此狀態程式碼與 401(未授權)類似,但指定請求者應當授權使用代理。
408 (請求超時) 伺服器等候請求時發生超時。
409 (衝突) 伺服器在完成請求時發生衝突。 伺服器必須在響應中包含有關衝突的資訊。
410 (已刪除) 如果請求的資源已永久刪除,伺服器就會返回此響應。
411 (需要有效長度) 伺服器不接受不含有效內容長度標頭欄位的請求。
412 (未滿足前提條件) 伺服器未滿足請求者在請求中設定的其中一個前提條件。
413 (請求實體過大) 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力。
414 (請求的 URI 過長) 請求的 URI(通常為網址)過長,伺服器無法處理。
415 (不支援的媒體型別) 請求的格式不受請求頁面的支援。
416 (請求範圍不符合要求) 如果頁面無法提供請求的範圍,則伺服器會返回此狀態程式碼。
417 (未滿足期望值) 伺服器未滿足"期望"請求標頭欄位的要求。

5xx(伺服器錯誤)

這些狀態程式碼表示伺服器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是伺服器本身的錯誤,而不是請求出錯。
500 (伺服器內部錯誤) 伺服器遇到錯誤,無法完成請求。
501 (尚未實施) 伺服器不具備完成請求的功能。 例如,伺服器無法識別請求方法時可能會返回此程式碼。
502 (錯誤閘道器) 伺服器作為閘道器或代理,從上游伺服器收到無效響應。
503 (服務不可用) 伺服器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。
504 (閘道器超時) 伺服器作為閘道器或代理,但是沒有及時從上游伺服器收到請求。
505 (HTTP 版本不受支援) 伺服器不支援請求中所用的 HTTP 協議版本。

相關文章