301 狀態碼(moved permanently)
301狀態碼在http1.0和http1.1規範中均代表永久重定向,對於post請求的重定向,還是需要使用者確認之後才能重定向,並且應該以post方法發出重定向請求。
關於post請求重定向使用者確認的問題,實際上瀏覽器都沒有實現;而且post請求的重定向應該發起post請求,這裡瀏覽器也並不一定遵守,所以說http規範的實現並未嚴格按照http規範的語義。
302 狀態碼(moved temporatily)
在http 1.0規範中,302表示臨時重定向。出現該狀態**時,瀏覽器能夠自動訪問新的url。
規範:原請求是get,可以自動重定向;原請求是post,則不能自動進行重定向。
實現:瀏覽器和伺服器的實現並沒有嚴格遵守http中302的規範,瀏覽器即便原請求是post也會自動重定向,導致規範和實現出現了二義性,由此衍生了一些問題,譬如302劫持,因此在http 1.1中將302的規範細化成了303和307,希望以此來消除二義性。
補充:302劫持——a站通過重定向到b站的資源xxoo,a站實際上什麼都沒做但是有乙個比較友好的網域名稱,web資源xxoo存在b站並由b站提供,但是b站的網域名稱不那麼友好,因此對搜尋引擎而言,可能會儲存a站的位址對應xxoo資源而不是b站,這就意味著b站出了資源版權、頻寬、伺服器的錢,但是使用者通過搜尋引擎搜尋xxoo資源的時候出來的是a站,a站什麼都沒做卻被索搜引擎廣而告之使用者,b站做了一切卻不被使用者知道,價值被a站竊取了。
303 狀態碼(see other)
繼承了http 1.0中302的實現:無論原請求是get還是post,都可以自動進行重定向
303響應應該禁止被快取。重定向的相應可能被快取。
307 狀態碼
繼承了http 1.0中302的規範:原請求是get 或 head,則瀏覽器可以自動重定向;原請求是 post,則不能自動進行重定向。
302、303、307 狀態碼辨析
在http 1.1中,302是不再推薦使用的,只是為了相容而作保留。為了細化http1.0中302的語義,http1.1引入了 303 和 307,主要用在對非 get、head 方法的響應上,而對於 get 和 head 的請求,可以自動重定向。
在 get、head 這些冪等的請求方式上,302、303、307 沒啥區別,而對於 post 就不同了,大部分瀏覽器的302 會將 post 請求轉為 get,而 303 規範強制將 post 轉為 get 請求,請求位址為 header 頭中的 location,307 則不一樣,規範要求瀏覽器繼續向 location 的位址 post 內容。
HTTP最常見狀態碼解析
200 請求成功 處理方式 獲得響應的內容,進行處理 202 請求被接受,但處理尚未完成 處理方式 阻塞等待 400 非法請求 處理方式 丟棄 401 未授權 處理方式 丟棄 403 禁止 處理方式 丟棄 500 伺服器內部錯誤 伺服器遇到了乙個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說...
HTTP 常見狀態碼
如果某項請求傳送到您的伺服器要求顯示您 上的某個網頁 例如,使用者通過瀏覽器訪問您的網頁或 googlebot抓取網頁時 伺服器將會返回 http 狀態碼響應請求。此狀態碼提供關於請求狀態的資訊,告訴 googlebot 關於您的 和請求的網頁的資訊。一些常見的狀態碼為 下面是 http 狀態碼的完...
HTTP 常見狀態碼
http 常見的狀態碼 1 開頭 表示客戶端相應某些動作 100 必須繼續發出請求 101 客戶要求伺服器根據請求轉化為http協議版本 2 開頭 表示請求成功 200 請求成功 3 開頭 表示頁面重定向 301 刪除請求資料 302 在其他url 發現請求資料 304 客戶端應執行了get操作 但...