Transfer-Encoding
程序员文章站
2022-07-13 13:59:58
...
请求:
回复类似
HTTP相应头:Transfer-Encoding
字面意思是「传输编码」。
实际上,HTTP 协议中还有另外一个头部与编码有关:Content-Encoding(内容编码)。
Content-Encoding 通常用于对实体内容进行压缩编码,目的是优化传输,例如用 gzip 压缩文本文件,能大幅减小体积。
内容编码通常是选择性的,例如 jpg / png 这类文件一般不开启,因为图片格式已经是高度压缩过的,再压一遍没什么效果不说还浪费 CPU。
而 Transfer-Encoding 则是用来改变报文格式,它不但不会减少实体内容传输大小,甚至还会使传输变大,那它的作用是什么呢?
本文接下来主要就是讲这个。Content-Encoding 和 Transfer-Encoding 二者是相辅相成的,对于一个 HTTP 报文,很可能同时进行了内容编码和传输编码。
通常我们可以通过Content-Length
来设置http相应的数据长度,但是如果数据长度未可知,就不行了
Transfer-Encoding 则可以告诉浏览器,内容是被分段发送的。
Transfer-Encoding: chunked 分块编码(chunked)
分块输入后,http resonse body的内容就会变成
数据长度(16进制,独占一行)
和数据长度一致的数据
数据长度2(16进制,独占一行)
和数据长度2一致的数据
0结尾是0
如
POST /web_proxy.html HTTP/1.1 User-Agent: Java/1.6.0_33 Host: 127.0.0.1:82 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive Content-type: application/x-www-form-urlencoded Transfer-Encoding: chunked 6 test=1 6 test=2
回复类似
HTTP相应头:Transfer-Encoding
字面意思是「传输编码」。
实际上,HTTP 协议中还有另外一个头部与编码有关:Content-Encoding(内容编码)。
Content-Encoding 通常用于对实体内容进行压缩编码,目的是优化传输,例如用 gzip 压缩文本文件,能大幅减小体积。
内容编码通常是选择性的,例如 jpg / png 这类文件一般不开启,因为图片格式已经是高度压缩过的,再压一遍没什么效果不说还浪费 CPU。
而 Transfer-Encoding 则是用来改变报文格式,它不但不会减少实体内容传输大小,甚至还会使传输变大,那它的作用是什么呢?
本文接下来主要就是讲这个。Content-Encoding 和 Transfer-Encoding 二者是相辅相成的,对于一个 HTTP 报文,很可能同时进行了内容编码和传输编码。
通常我们可以通过Content-Length
来设置http相应的数据长度,但是如果数据长度未可知,就不行了
Transfer-Encoding 则可以告诉浏览器,内容是被分段发送的。
Transfer-Encoding: chunked 分块编码(chunked)
分块输入后,http resonse body的内容就会变成
数据长度(16进制,独占一行)
和数据长度一致的数据
数据长度2(16进制,独占一行)
和数据长度2一致的数据
0结尾是0
如
HTTP/1.1 200 OK Server: nginx Date: Sun, 03 May 2015 17:25:23 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Content-Encoding: gzip 1f �H���W(�/�I�J 0