HTTP協議詳解(一)

2021-10-07 05:46:31 字數 2935 閱讀 3130

http協議(hypertext transfer protocol,超文字傳輸協議)是網際網路上應用最為廣泛的一種網路傳輸協議,所有的www檔案都必須遵守這個標準。

http是乙個基於tcp/ip通訊協議來傳遞資料(html 檔案, 檔案, 查詢結果等)。

完整的url:模式(或稱協du議)、網域名稱(或ip,ip用來標識機器/主機/伺服器)、埠、路徑

https預設埠443

客戶端傳送乙個http請求到伺服器的請求訊息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成

http響應也由四個部分組成,分別是:狀態行、訊息報頭、空行和響應正文。

瀏覽器中的network中的resopnse看到的是響應正文

常見的http狀態碼:

web 應用還可以利用客戶端快取去節省相同頁面內容的生成和傳輸時間。分為強快取和協商快取

強快取:瀏覽器直接從本地快取中獲取資料,不與伺服器進行互動。強快取在客戶端和伺服器端都會存在。​​​​​​​

協商快取:瀏覽器傳送請求到伺服器,伺服器判定是否可使用本地快取。

瀏覽器快取主要是 http 協議定義的快取機制。html meta 標籤,例如

//使用帶有 http-equiv 屬性的 標籤時,伺服器將把名稱/值對新增到傳送給瀏覽器的內容頭部
http-equiv類似於http的頭部協議,它回應給瀏覽器一些有用的資訊,以幫助正確和精確地顯示網頁內容。與之對應的屬性值為content,content中的內容其實就是各個引數的變數值 

1.expires(期限)

說明:指定網頁在快取中的過期時間,一旦網頁過期,必須到伺服器上重新傳輸。

語法:

注意:必須使用gmt的時間格式,或者直接設為0(數字表示多久後過期)

2.pragma(cache模式)

說明:禁止瀏覽器從本地計算機的快取中訪問頁面內容。

語法:

注意:網頁不儲存在快取中,每次訪問都重新整理頁面。這樣設定,訪問者將無法離線瀏覽。

3.refresh(重新整理)

說明:自動重新整理並指向新頁面。

語法:

// 其中的5表示5秒後自動重新整理並調整到url新頁面。

協商快取流程分析:etag

if-none-match

:伺服器為每份資源分配的唯一標識字串。

瀏覽器發現快取過期(快取可能還能使用,伺服器資源可能仍然沒有改變,所以需要與伺服器協商,讓伺服器判斷本地快取是否還能使用)

瀏覽器請求資源,伺服器會在響應報文頭中加入

etag

字段。資源更新時,伺服器端的

etag

值也隨之更新,生成 etag 值時,並沒有 統一的演算法規則,而僅僅是由伺服器來分配。;

瀏覽器再次請求資源時,會在請求報文頭中新增

if-none-mat

ch欄位,它的值就是上次響應報文中的

etag

的值;伺服器會比對

etag

與if-none-match

的值是否一致,如果不一致,伺服器則接受請求,返回更新後的資源;如果一致,表明資源未更新,則返回狀態碼為304的響應,可繼續使用本地快取,要注意的是,此時響應頭會加上

etag

字段,即使它沒有變化。

last-modified

和if-modified-since

:是gmt格式的時間字串。

瀏覽器第一次向伺服器請求資源後,伺服器會在響應頭中加上

last-modified

字段,表明該資源最後一次的修改時間;

瀏覽器再次請求該資源時,會在請求報文頭中新增

if-modified-since

字段,它的值就是上次伺服器響應報文中的

last-modified

的值;伺服器會比對

last-modified

與if-modified-since

的值是否一致,如果不一致,伺服器則接受請求,返回更新後的資源;如果一致,表明資源未更新,則返回狀態碼為

304的響應,可繼續使用本地快取,與

etag

不同的是:此時響應頭中不會再新增

last-modified

字段。強快取流程分析:

使用者發起了乙個http請求後,瀏覽器發現先本地已有所請求資源的快取,便開始檢查快取是否過期。有兩個http頭部字段控制快取的有效期:expires和cache-control,瀏覽器是根據以下兩步來判定快取是否過期的:

檢視快取是否有cache-control的s-maxage或max-age指令,若有,則使用響應報文生成時間date

+s-maxage/max-age獲得過期時間,再與當前時間進行對比(s-maxage適用於多使用者使用的公共快取伺服器);

如果沒有cache-control的s-maxage或max-age指令,則比較expires中的過期時間與當前時間。expires是乙個絕對時間。

若快取未過期,返回狀態碼為200,則直接從本地讀取快取,這就完成了整個強快取過程;如果快取過期,則進入協商快取或伺服器返回新資源過程。

http協議詳解(一)HTTP協議基礎

最近在看一些http的東西,http比較雜,大致整理了一下,用思維導圖的方式呈現了出來。我會分幾個板塊來介紹http協議,具體的板塊也在下面的思維導圖中標註出來了,盡量以簡潔的方式為大家呈現http的內容。初寫部落格,文中有些紕漏的地方還請大家指點。http 超文字傳輸協議,本質上是一種通訊協議。用...

詳解 HTTP協議 (一) HTTP 介紹

http 簡介 http協議是hyper text transfer protocol 超文字傳輸協議 的縮寫,是用於從全球資訊網 www world wide web 伺服器傳輸超文字到本地瀏覽器的傳送協議。http是乙個基於tcp ip通行協議來傳遞資料 html檔案 檔案 查詢結果等 http...

Http協議詳解 Http請求詳解

http是hypertext transfer protocol 超文字傳輸協議 的簡寫,它是tcp ip協議的乙個應用層協議,用於定義web瀏覽器與web伺服器之間交換資料的過程。客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,http協議用於定義客戶端與w...