HTTP報文學習(一)

報文(message)
是 HTTP 通信中的基本單位,由 8 位組字節流(octet sequence,
其中 octet 爲 8 個比特)組成,通過 HTTP 通信傳輸。
實體(entity)
作爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實
體首部和實體主體組成。
HTTP 報文的主體用於傳輸請求或響應的實體主體。
通常,報文主體等於實體主體。只有當傳輸中進行編碼操作時,實體
主體的內容發生變化,才導致它和報文主體產生差異。
303該狀態碼錶示由於請求對應的資源存在着另一個 URI,應使用 GET
方法定向獲取請求的資源。
303 狀態碼和 302 Found 狀態碼有着相同的功能,但 303 狀態碼明確
表示客戶端應當採用 GET 方法獲取資源,這點與 302 狀態碼有區
別。
304 服務器端允許請求訪問資源,但未滿足條件的情況下。
307類似302,但是不允許從post方法變成get方法。
代理
每次通過代理服務器轉發請求或響應時,會追加寫入 Via 首
部信息。
使用代理服務器的理由有:利用緩存技術(稍後講解)減少網絡帶寬
的流量,組織內部針對特定網站的訪問控制,以獲取訪問日誌爲主要
目的。
緩存代理和透明代理
透明代理的意思是客戶端根本不需要知道有代理服務器的存在,會改變你的request fields(報文),並會傳送真實IP。
緩存代理是代理服務器上會將真實服務器的信息緩存一段時間,在緩存的時間範圍內,當下一次客戶端訪問代理服務器的時候,直接訪問的是代理服務器上面的緩存信息。這樣就會加速訪問速度。

HTTP首部
當 HTTP 報文首部中出現了兩個或兩個以上具有相同首部字段名時
會怎麼樣?這種情況在規範內尚未明確,根據瀏覽器內部處理邏輯
的不同,結果可能並不一致。有些瀏覽器會優先處理第一次出現的
首部字段,而有些則會優先處理最後出現的首部字段。

主要分爲下面幾個部分:通用首部,請求首部,響應首部和實體首部。

首部字段DNT屬於HTTP請求首部,其中DNT是Do Not Track的簡稱,意爲拒絕個人信息被收集,是表示拒絕被精準廣告追蹤的一種方法,0爲同意被追蹤,1爲拒絕被追蹤

通用首部字段
1.Cache-control
!!事實上 no-cache 代表不緩存過期的資源,緩存會向源服務器進行有效期確認後處理資源,也許稱爲 do-notserve-from-cache-without-revalidation 更合適。no-store 纔是真正地不進行緩存,請
讀者注意區別理解。
!!s-maxage 指令的功能和 max-age 指令的相同,它們的不同點是 smaxage
指令只適用於供多位用戶使用的公共緩存服務器 2。也就是
說,對於向同一用戶重複返回響應的服務器來說,這個指令沒有任何作用。
2.Connection 首部字段具備如下兩個作用。
控制不再轉發給代理的首部字段
管理持久連接
3.Date 表明創建 HTTP 報文的日期和時間
4.Pragma 客戶端明確表示不接受緩存資源,針對的是所有的中間服務器(結合np-cache一起使用)
5.Trailer 會事先說明在報文主體後記錄了哪些首部字段。該
首部字段可應用在 HTTP/1.1 版本分塊傳輸編碼時。
6.Transfer-Encoding 僅僅對於分塊傳輸編碼有效。
7.Upgrade是否使用更高的版本進行通信。同時需要指定connection:Upgrade Upgrade:TLS1.1
8.Via首部字段 Via 不僅用於追蹤報文的轉發,還可避免請求迴環的發生。
所以必須在經過代理時附加該首部字段內容。trace方法一起使用。
9.Warning 告知用戶一些與緩存相關的問題的警告

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章