一般情況HTTP的Header包含ContentLength域來指明報文體的長度如
有時候服務生成HTTP回應是無法確定消息大小的比如大文件的下載或者後台需要復雜的邏輯才能全部處理頁面的請求這時用需要實時生成消息長度服務器一般使用chunked編碼
在進行Chunked編碼傳輸時在回復消息的Headers有transfercoding域值為chunked表示將用chunked編碼傳輸內容使用chunked編碼的Headers如下(可以利用FireFox的FireBug插件或HttpWatch查看Headers信息HttpWatch還可以查看chunked的個數)
chunked采用以下方式編碼
ChunkedBody=*chunk
CRLF
footer
CRLF
chunk=chunksize[chunkext]CRLF
chunkdataCRLF
hexnozero=<HEXexcluding>
chunksize=hexnozero*HEX
chunkext=*(;chunkextname[=chunkextvalue])
chunkextname=token
chunkextval=tokenquotedstring
chunkdata=chunksize(OCTET)
footer=*entityheader
編碼使用若干個Chunk組成由一個標明長度為的chunk結束每個Chunk有兩部分組成第一部分是該Chunk的長度和長度單位(一般不寫)第二部分就是指定長度的內容每個部分用CRLF隔開在最後一個長度為的Chunk中的內容是稱為footer的內容是一些沒有寫的頭部內容
From:http://tw.wingwit.com/Article/program/net/201311/13771.html