Http 分块传输编码 Transfer-Encoding: chunked

来源:互联网 发布:java枚举类的定义 编辑:程序博客网 时间:2024/05/22 02:20

定义
分块编码就是把报文分割为若干大小已知的块,一次发送到接收端。

常见使用场景
长连接
发送时无法获取主体长度

其他传输场景
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>

拖挂可以包含附带的首部字段,他们的值在报文开始的时候可能是无法确定的(例如,必须要先生成主体结构)

0 0
原创粉丝点击