a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 網管 > 服務器 > 正文

Http協議中關于Content-Length的解讀

2020-05-27 13:19:02
字體:
來源:轉載
供稿:網友

   在HTTP協議中,有Content-Length的詳細解讀。Content-Length用于描述HTTP消息實體的傳輸長度the transfer-length of the message-body。在HTTP協議中,消息實體長度和消息實體的傳輸長度是有區別,比如說gzip壓縮下,消息實體長度是壓縮前的長度,消息實體的傳輸長度是gzip壓縮后的長度。

  在具體的HTTP交互中,客戶端是如何獲取消息長度的呢,主要基于以下幾個規則:

  響應為1xx,204,304相應或者head請求,則直接忽視掉消息實體內容。

  如果有Transfer-Encoding,則優先采用Transfer-Encoding里面的方法來找到對應的長度。比如說Chunked模式。

  “如果head中有Content-Length,那么這個Content-Length既表示實體長度,又表示傳輸長度。如果實體長度和傳輸長度不相等(比如說設置了Transfer-Encoding),那么則不能設置Content-Length。如果設置了Transfer-Encoding,那么Content-Length將被忽視”。這句話翻譯的優點饒,其實關鍵就一點:有了Transfer-Encoding,則不能有Content-Length。

  Range傳輸。不關注,沒詳細看了:)

  通過服務器關閉連接能確定消息的傳輸長度。(請求端不能通過關閉連接來指明請求消息體的結束,因為這樣可以讓服務器沒有機會繼續給予響應)。這種情況主要對應為短連接,即非keep-alive模式。

  HTTP1.1必須支持chunk模式。因為當不確定消息長度的時候,可以通過chunk機制來處理這種情況。

  在包含消息內容的header中,如果有content-length字段,那么該字段對應的值必須完全和消息主題里面的長度匹配。

  “The entity-length of a message is the length of the message-body before any transfer-codings have been applied”

  也就是有chunk就不能有content-length 。

  其實后面幾條幾乎可以忽視,簡單總結后如下:

  1、Content-Length如果存在并且有效的話,則必須和消息內容的傳輸長度完全一致。(經過測試,如果過短則會截斷,過長則會導致超時。)

  2、如果存在Transfer-Encoding(重點是chunked),則在header中不能有Content-Length,有也會被忽視。

  3、如果采用短連接,則直接可以通過服務器關閉連接來確定消息的傳輸長度。(這個很容易懂)

  結合HTTP協議其他的特點,比如說Http1.1之前的不支持keep alive。那么可以得出以下結論:

  1、在Http 1.0及之前版本中,content-length字段可有可無。

  2、在http1.1及之后版本。如果是keep alive,則content-length和chunk必然是二選一。若是非keep alive,則和http1.0一樣。content-length可有可無。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色综合激情 | 亚洲国产精久久久久久久 | 亚洲另类小视频 | 亚洲精品成人 | 99热99| 91九色在线观看 | 日韩精品一区二区三区视频播放 | 中文字幕av一区二区三区 | 日韩1区| 色一情一乱一伦一区二区三区 | 成av人在线 | 亚洲视频手机在线观看 | 亚洲精品久久久久久久久久 | 在线视频久久 | 日韩精品一区二区三区在线播放 | 日本免费在线观看 | 看亚洲a级一级毛片 | 成人一区二区三区视频 | 免费一区 | 久久av网 | 日韩一区电影 | 午夜精品久久久久久久99樱桃 | 国产二区在线播放 | 欧美日韩国产精品久久久久 | 久久公开视频 | 日韩精品三区 | av一区二区三区 | 亚洲精品一区二区网址 | 欧美日韩福利 | 国产一区二区欧美 | 日韩精品免费一区二区三区 | 亚洲视频一区在线 | 一区二区三区四区在线 | 人人草人人干 | 91.com在线观看 | 国产一区二区三区久久久 | 99精品国产在热久久 | 亚洲精品九九 | 在线观看免费视频日韩 | 国产一级片一区二区三区 | 中文字幕视频在线观看 |