欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Transfer-Encoding

程序员文章站 2022-07-13 13:59:58
...
请求:
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