http 301、304狀態碼


在利用httpwatch進行抓包分析時,我們經常會看到200、301、304這幾個狀態碼。具本三者是什么意思呢?

200表示正常0k,這個是地球人都知道的了。

301 Moved Permanently 表示客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。

304 Not Modified:客戶端有緩沖的文件並發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。

如果客戶端在請求一個文件的時候,發現自己緩存的文件有 Last Modified ,那么在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。因此,如果請求中包含 If Modified Since,就說明已經有緩存在客戶端。只要判斷這個時間和當前請求的文件的修改時間就可以確定是返回 304 還是 200 。對於靜態文件,例如:CSS、圖片,服務器會自動完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新。但是對於動態頁面,就是動態產生的頁面,往往沒有包含 Last Modified 信息,這樣瀏覽器、網關等都不會做緩存,也就是在每次請求的時候都完成一個 200 的請求。

一般的大的站點的圖片服務器都有實現HTTP 304 緩存功能。

這個 304 狀態一般主要在用戶刷新頁面(F5鍵)的時候觸發,當用戶在刷新頁面的時候,因為原來的頁面里的很多圖片已經緩存過,客戶端的瀏覽器已經記錄了圖片的最后更新時間(Last Mod),所以在用戶刷新頁面的時候,會向服務器提交一個字段:If-Modified-Since: Wed, 08 Sep 2010 21:35:06 GMT

這個時候,服務器端的程序先取得這個字段的值,然后與服務器上的圖片最后修改時間對比,如果相同,就直接返回 304 Not Modified ,然后停止。這樣就不用把圖片重新傳輸到客戶端,達到節省帶寬的目的。

關於 Cache-Control: max-age=秒 和 Expires

Expires = 時間,HTTP 1.0 版本,緩存的載止時間,允許客戶端在這個時間之前不去檢查(發請求)
max-age = 秒,HTTP 1.1版本,資源在本地緩存多少秒。
如果max-age和Expires同時存在,則被Cache-Control的max-age覆蓋。

Expires 的一個缺點就是,返回的到期時間是服務器端的時間,這樣存在一個問題,如果客戶端的時間與服務器的時間相差很大,那么誤差就很大,所以在HTTP 1.1版開始,使用Cache-Control: max-age=秒替代。

 

所有狀態碼匯總:

1xx(臨時響應)
表示臨時響應並需要請求者繼續執行操作的狀態代碼。

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

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

3xx (重定向)
表示要完成請求,需要進一步操作。 通常,這些狀態代碼用來重定向。

代碼   說明
300   (多種選擇)  針對請求,服務器可執行多種操作。 服務器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。
301   (永久移動)  請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
302   (臨時移動)  服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。
303   (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。
304   (未修改) 自從上次請求后,請求的網頁未修改過。 服務器返回此響應時,不會返回網頁內容。
305   (使用代理) 請求者只能使用代理訪問請求的網頁。 如果服務器返回此響應,還表示請求者應使用代理。
307   (臨時重定向)  服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。

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 協議版本。

 

 

http頭部參考 https://www.cnblogs.com/rencoo/p/11940100.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM