1. 程式人生 > >HTTP狀態碼302、303、307區別

HTTP狀態碼302、303、307區別

狀態碼 blog rec 用戶 存在 保留 temporary 程序 cli

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

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

302 Found
臨時性重定向。該狀態碼表示請求的資源已被分配了新的URI,希望用戶(本次)能使用新的URI訪問。和301相似,但302表示的資源不是永久移動,只是臨時性的。換句話說,已移動的資源對應的URI將來還有可能發生變化,比如,用戶把uri保存為書簽,但不會像301狀態碼出現時那樣更新書簽,而是仍舊保留返回302狀態碼的頁面對應的uri

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。但是對於處理響應時的行為,各種瀏覽器有可能出現不同的情況。

HTTP狀態碼302、303、307區別