HTTP報文內的HTTP資訊

2022-07-15 22:27:19 字數 1737 閱讀 3484

http報文:用於http協議互動的資訊,是由多行資料構成的字串文字(用cr+lf作換行符)。

結構:報文首部+空行+報文主體(非必需)

請求報文:客戶端的http報文。  報文首部的內容:請求行,請求首部字段,通用首部字段,實體首部字段,其他。

響應報文:伺服器端的http報文。 報文首部的內容:狀態行,響應首部字段,通用首部字段,實體首部字段,其他。

編碼提公升傳輸速率

http在傳輸資料時可以進行編碼來提公升傳輸速率。編碼的操作需要計算機來完成,因此會消耗更多的cpu等資源。

內容編碼指明應用在實體內容上的編碼格式,並保持實體資訊原樣壓縮。內容編碼後的實體由客戶端接受並負責解碼。

常見的內容編碼有:gzip(gnu zip)、compress(unix系統的標準壓縮)、deflate(zlib)、identity(不進行編碼)。

分塊傳輸編碼(chunked transfer coding):一種把實體主體分塊的功能。

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

由客戶端進行解碼。

http/1.1中存在傳輸編碼(transfer coding)的機制。它可以在通訊時按照某種編碼方式傳輸,但只定義作用域分塊傳輸編碼中。

傳送多種資料的多部分物件集合

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

multipart/form-data:在web表單檔案上傳時使用。

multipart/byteranges:狀態碼206(partial content,部分內容)響應報文包含了多個範圍的內容時使用。

範圍請求(range request)

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

#

5001~10000位元組

range: bytes=5001-10000

#從5001位元組之後全部的

range: bytes=5001-

#從一開始到3000位元組,和5000-7000位元組的多重範圍

range: bytes=-3000, 5000-7000

針對範圍請求,相應會返回狀態碼為206 partial content的響應報文。

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

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

內容協商(content negotiation)

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

用處:當瀏覽器的預設語言為英語或中文,訪問相同uri的web頁面,會顯示對應的英語班或中文版web頁面。

三種型別:

1.伺服器驅動協商(server-driver negotiation):由伺服器端進行內容協商。以瀏覽器傳送的首部字段作為判定的依據,並不一定能篩選出最優的內容。

2.客戶端驅動協商(agent-driver negotiation):由客戶端進行內容協商的方式。使用者從瀏覽器顯示的可選列表中手動選擇。

3.透明協商(transparent negotiation):是伺服器驅動和客戶端驅動的結合體,由伺服器端和客戶端各自進行內容協商的一種方法。

http報文內的http資訊

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

HTTP報文內的HTTP資訊

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

HTTP報文內的HTTP資訊

宣告 本人的所有部落格皆為個人筆記,作為個人知識索引使用,因此在敘述上存在邏輯不通順 跨度大等問題,希望理解。分享出來僅供大家學習翻閱,若有錯誤希望指出,感謝!http報文是由多行資料構成的字串文字,使用cr lf換行 cr 回車符 r lf 換行符 n http報文大致可分為報文首部和報文主體兩部...