HTTP報文內的HTTP資訊

2021-10-10 19:01:21 字數 1610 閱讀 8642

宣告:本人的所有部落格皆為個人筆記,作為個人知識索引使用,因此在敘述上存在邏輯不通順、跨度大等問題,希望理解。分享出來僅供大家學習翻閱,若有錯誤希望指出,感謝!

http報文是由多行資料構成的字串文字,使用cr+lf換行

cr:回車符:\r lf:換行符:\n

http報文大致可分為報文首部和報文主體兩部分,二者由最初的空行(cr+lf)來劃分

通常,不一定要有報文主體

請求行請求首部字段

通用首部字段

實體首部字段

其他首部字段

狀態行響應首部字段

通用首部字段

實體首部字段

其他首部字段

請求行:包含用於請求的方法、請求uri和http版本

狀態行:包含表明響應結果的狀態碼、原因短語和http版本

首部字段:包含請求和響應的各種條件和屬性的各類首部

其他:可能包含http的rfc裡未定義的首部(cookie等)

http在傳輸資料時可以按照資料原貌直接傳輸,也可以在傳輸過程中通過編碼提公升傳輸效率

編碼操作需要計算機來完成,因此會消耗更多cpu資源(犧牲cpu資源來提公升傳輸效率)

http中有一種被稱為內容編碼的功能可以進行壓縮操作

報文:http的基本通訊單位,由8位組位元組流組成

實體:作為請求或響應的有效荷載資料被傳輸,其內容由實體首部和實體主體組成

通常報文主體等於實體主體,只有傳輸過程中進行編碼操作時,實體主體的內容發生變化,導致它和報文主體產生差異

在http通訊過程中,請求的編碼實體資源尚未全部傳輸完成之前,瀏覽器無法顯示請求頁面,在傳輸大容量資料時,通過把資料分割成多塊,能夠讓瀏覽器逐步顯示頁面,這種把實體主體分塊的功能稱為分塊傳輸編碼

分塊傳輸編碼會把實體主體分成多個部分,每一塊都會用十六進製制來標記塊的大小,而實體主體的最後一塊會使用(cr+lf)來標記

使用分塊傳輸編碼的實體主體會由接收的客戶端負責解碼

http協議支援多部分物件集合,傳送的乙份報文主體內可含有多型別實體

多部分物件集合包含物件如下:

在http報文中使用多部分物件集合時,需要在首部欄位裡加上content-type

多部分物件集合的每個部分型別中,都可以含有首部字段

執行範圍請求時,會用到首部欄位range來指定資源的byte範圍

byte範圍指定形式如下:

針對範圍請求,響應會返回狀態碼為206的響應報文,響應報文中的content-range指定範圍的實體內容

對於多重範圍的範圍請求,響應會在首部欄位content-type標明multipart/byteranges後返回響應報文

如果伺服器無法響應範圍請求,則會返回狀態碼 200 ok 和完整的實體內容

內容協商機制是指客戶端和服務端就響應的資源內容進行交涉,然後提供給客戶端最為合適的資源

內容協商會以語言、字符集、編碼方式等為基準判斷響應的資源

包含在請求報文中的某些首部欄位為判斷的基準:

內容協商技術有以下3種型別:

客戶端驅動協商:由客戶端進行內容協商,使用者從瀏覽器提供的可選項列表中手動選擇

透明協商:伺服器驅動協商+客戶端驅動協商

http報文內的http資訊

1.請求報文和響應報文的首部內容組成 請求行 包含請求的方法,請求uri和http版本。狀態行 包含相應結果的狀態碼,原因短語和http版本。首部字段 通用首部,請求首部,響應首部和實體首部。其他 包含http的rfc裡未定義的首部 cookie等 2.編碼提公升傳輸速率 壓縮傳輸的內容編碼 gzi...

HTTP報文內的HTTP資訊

報文的定義 用於http協議的資訊被稱為http報文 報文由報文首部和報文主體構成,中間由 cr lf 回車 換行 分割開來 由於報文的傳輸可以通過編碼提公升傳輸效率,所以需要了解下報文 message 與實體 entity 的區別 可以看出在一般情況下報文主體和實體主體是一致的,但在傳輸中進行編碼...

HTTP報文內的HTTP資訊

http報文 用於http協議互動的資訊,是由多行資料構成的字串文字 用cr lf作換行符 結構 報文首部 空行 報文主體 非必需 請求報文 客戶端的http報文。報文首部的內容 請求行,請求首部字段,通用首部字段,實體首部字段,其他。響應報文 伺服器端的http報文。報文首部的內容 狀態行,響應首...