在图解http里面看到Content-Encoding对应的是内容编码,TE对应的是传输编码。文件通过内容编码的格式压缩,然后再解压。而TE是决定分块的压缩格式。Content-Encoding和TE的作用感觉有重叠。
在图解http里面看到Content-Encoding对应的是内容编码,TE对应的是传输编码。文件通过内容编码的格式压缩,然后再解压。而TE是决定分块的压缩格式。Content-Encoding和TE的作用感觉有重叠。
去它的内容编码和传输编码,查了很多资料也不明白。我认为区别在以下:
①
p83也有讲到:
Trailer // 请求首部字段
TE // 请求首部字段
Transfer-Encoding // 通用首部字段
都属于逐跳首部。也就是说,这些头部只对单词转发有效,在通过代理或者缓存服务器会失效。
而Content-Encoding
属于端到端首部(实体首部字段)。对请求/相应中所有转发都有效。
另外,TE除了指定传输编码之外,还可以指定分块传输时在所有内容结束后trailer所指定的字段。
如:
TE: trailers
Trailer: Expires
②
首部字段TE会告知服务器客户端能够处理相应的传输编码方式及相对优先级。首部字段TE除指定传输编码之外,还可以指定伴随trailer字段的分块传输编码的方式。应用后者时,只需把trailers赋值给该字段值。 (p117)
首部字段Content-Encoding会告知客户端服务器对实体的主题部分选用的内容压缩方式。 (p127)
注意,上述两点中TE告知服务器客户端怎样怎样,Content-Encoding告知客户端怎样怎样...
HTTP/1.1的传输编码方式仅对分块传输编码有效。 (p96)
3 回答2.3k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读
987 阅读
794 阅读
https
是最外层编码,指出是否应当加密。Transfer-Encoding: chunked
是第 2 层编码,指出是否Content-Length
不能预知,而采取分块传输,如果结束了会在尾块中告知。Content-Encoding: gzip
是第 3 层编码,指出内容是否经过压缩、是否需要解压。Content-Type: text/html; charset=utf-8
是最内层编码,告知文件是 Unicode 字符集的UTF-8
编码的 HTML 代码,需要用UTF-8
码表将1010
机器码换算为字符后,再按照 HTML 编程语言来解读和渲染它。当然它也可以是
Content-Type: application/x-gzip
,但与第 3 层的区别是,第 3 层的Content-Encoding: gzip
压缩表示交给前端时应当不透明地自动解压,前端需要的是没压缩前的东西,而最内层Content-Type: application/x-gzip
的意思是,所获取的内容本身就是一个.gz
文件。