簡體   English   中英

HTTP重定向代碼之間的區別

[英]Difference between HTTP redirect codes

各種HTTP 3XX重定向代碼之間的差異對我來說並不清楚。 是的,我已經閱讀了規范,但這里的標准和實際做法之間似乎存在一些差異。

301重定向代碼似乎足夠清楚:這意味着資源被永久移動到另一個URI,未來的請求應該使用該URI。

307重定向代碼似乎也很清楚:它意味着重定向是臨時的,未來的請求仍應使用原始URI。

但是我不知道302303之間有什么區別,或者為什么它們中的任何一個與301真的不同。 似乎302原本打算成為臨時重定向(如307 ),但在實踐中,大多數瀏覽器都將其視為303 但是303301之間的區別是什么? 301應該意味着重定向永久嗎?

  • 301 :永久重定向。 對此資源發出后續請求的客戶端應使用新URI。 客戶端不應自動執行重定向的POST / PUT / DELETE請求。
  • 302 :重定向未定義的原因。 客戶端使此資源應該使用新的URI的后續請求。 客戶端不應自動執行重定向的POST / PUT / DELETE請求。
  • 303 :重定向未定義的原因。 通常,'行動已經完成,繼續在其他地方。 客戶端使此資源應該使用新的URI的后續請求。 客戶端遵循POST / PUT / DELETE請求的重定向,但使用GET作為后續請求
  • 307 :臨時重定向。 資源可能稍后返回此位置。 對此資源發出后續請求的客戶端應使用舊URI。 客戶端不應自動執行重定向的POST / PUT / DELETE請求。

如果您有選擇,我個人建議避免使用302。 許多客戶在遇到302時都不遵守規范。對於臨時重定向,您應該使用303或307,具體取決於您對非GET請求的行為類型。 除非您需要POST / PUT / DELETE上的備用行為,否則首選307到303。

303和307之間的區別是:

303 :見其他。 請求已正確接收,但應使用重定向網址上的GET檢索結果。

307 :臨時重定向。 應將整個請求重定向到新網址。 任何帖子數據都應該重新發布。

請注意, 302的行為是307,但大多數瀏覽器都將其實現為303的行為(當時兩者都不存在)。 因此,引入了這兩個新代碼來代替302。

301和303之間的區別:

301 :移動文檔。 未來的請求應該使用新的URL。 這個網址已經過時了。

注意:請注意此代碼。 瀏覽器和代理往往會在其上應用非常激進的緩存,因此如果您使用301回復,則可能需要很長時間才能重新訪問該網址。

303 :正確接收請求。 處理任何PUT請求。 可以從重定向URL檢索生成的文檔 未來的請求仍應轉到原始網址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM