1. 程式人生 > >Http 分塊傳輸編碼 Transfer-Encoding: chunked

Http 分塊傳輸編碼 Transfer-Encoding: chunked

定義
分塊編碼就是把報文分割為若干大小已知的塊,一次傳送到接收端。

常見使用場景
長連線
傳送時無法獲取主體長度

其他傳輸場景
1、非長連線 即傳送完資料後就斷開連線
接收端讀取到EOF(-1)即讀取完畢
2、長連線
固定主體長度,通過響應頭中的Content-Length決定是否讀取結束。

塊資料報文結構

Http響應

HTTP/1.1 200 OK <CR><LF>
Content-type: text/plain<CR><LF>
Transfer-encoding: chunked<CR><LF>
Trailer: Content-MD5<CR
>
<LF> <CR><LF>

第一塊(十六進位制標示的分塊大小 27–>39)

27<CR><LF>
We hold these truths to be self-evident<CR><LF>

第二塊(十六進位制標示的分塊大小 26–>38)

26<CR><LF>
,that all men are created equal,that<CR><LF>

最後一塊(以0結尾)

0<CR><LF>

拖掛(如果在響應首部中有定義)

Content-MD5:ofj0a39889a4ug00fas9f3jf0jf<CR><LF>

拖掛可以包含附帶的首部欄位,他們的值在報文開始的時候可能是無法確定的(例如,必須要先生成主體結構)