12 HTTP的實體資料

2022-09-06 04:57:12 字數 1693 閱讀 2711

目錄資料型別使用的頭字段

語言型別和編碼

內容協商的質量值

內容協商的結果

http的body

tcp/ip 協議棧,傳輸資料基本格式:header+body。

tcp、udp是傳輸層協議,不關心body資料是什麼,只要把資料傳送給對方就算完成了任務。

http 協議是應用層協議,資料到達只能說工作完成了一半,還需要告訴上層應用,這是什麼資料,否則上層應用不知所措。

mime 用在電子郵件中,可以讓電子郵件傳送ascii 碼以外的任意資料,給資料定義了乙個標準規範。

mime 把資料分為8大類,每個大類下再細分多個子類,形式為「type/subtype」的字串,納入到了http頭字段裡。

http 使用了其中一部分,用來標記 body 的資料型別,即mime type

text

image

audio/video

audio/mpeg;video/mp4

http 在傳輸時為了節約頻寬,有時還會壓縮資料,為了不要讓瀏覽器繼續猜,還需要乙個encoding type,告訴資料用什麼編碼格式,這樣對方才能正確解壓縮,還原出原始資料。

常用的encoding type

gzip:gnu zip 壓縮格式,最流行

deflate:zlib 壓縮格式,也流行

br:一種專門為http優化的新壓縮演算法

有了mime type和encoding type,無論是瀏覽器還是伺服器都可以很輕鬆識別出body的型別,這樣就能正確處理資料了。

為了客戶端和瀏覽器的「內容協商」,http協議定義了兩個 accept 請求頭字段和兩個 content 實體頭欄位。

客戶端用accept 頭告訴伺服器希望接收到什麼樣的資料;伺服器用 content頭告訴客戶端實際傳送了什麼樣的資料。

舉例:

request headers:

accept-encoding: gzip, deflate, br

response hraders:

content-length: 718

content-type: text/plain; charset=utf-8

為了解決body 的語言「國際化」的問題,引入【語言型別和字符集】的概念。

語言型別:type-subtyoe,如英語,漢語,日語等

字符集:charset,如 ascii,gbk,utf-8 等

語言型別使用的頭字段

accept-language: zh-cn,zh;q=0.9

content-language:zh-cn

字符集在http中使用的頭字段是 accept-charset ,但是響應頭卻沒有對應的content-charset,而是在 content-type 欄位的資料型別後面用 charset=*** 表示。

http協議裡用 accept、accept-encoding、accept-language 等請求頭欄位進行內容協商的時候,還可以用一種特殊的「q」引數表示權重來設定優先順序。

「q」的含義,「quality factor」。

權重的取值:

內容協商的過程是不透明的,每個web伺服器使用的演算法都不一樣

有時伺服器會在響應頭多加乙個 vary 字段,記錄伺服器在內容協商時參考的請求字段,給出一些資訊。

海納百川 HTTP的實體資料

我們在前面學到了http報文結構,是由header body組成。不過我們前面學的知識都還只是停留在header部分,所以現在我們要開始研究body部分。這便引出了http的實體資料概念。1.資料型別和編碼 在 tcp ip 協議棧裡,傳輸資料基本上都是 header body 的格式。但 tcp ...

HTTP協議實體的基本講解

http協議運作方式 http協議是基於請求 響應正規化的。乙個客戶機與伺服器建立連線後,傳送乙個請求給伺服器,請求方式的格式為,統一資源識別符號 協議版本號,後邊是mime資訊包括請求修飾符 客戶機資訊和可能的內容。伺服器接到請求後,給予相應的響應資訊,其格式為乙個狀態行包括資訊的協議版本號 乙個...

HTTP協議實體的基本講解

http協議是基於請求 響應正規化的。乙個客戶機與伺服器建立連線後,傳送乙個請求給伺服器,請求方式的格式為,統一資源識別符號 協議版本號,後邊是mime資訊包括請求修飾符 客戶機資訊和可能的內容。伺服器接到請求後,給予相應的響應資訊,其格式為乙個狀態行包括資訊的協議版本號 乙個成功或錯誤的 後邊是m...