对 Content-Encoding 和 Transfer-Encoding 的初级理解
On 2013-01-16 01:51:18 By Soli对 Content-Encoding 和 Transfer-Encoding 的初级理解
搜到了几篇关于 Transfer-Encoding 的文章。以下是我的一些初级理解,赶紧记下来,明天别忘了。
我的理解
Content-Encoding 是用于在数据源和数据最终接收者之间传递编码方式的。中间代理(如果有的话)不会去试图解码,而只是原样传输。甚至最终接收者在保存内容的时候,也是原样保存的。典型的情况是 http 下载 gzip 格式的压缩包。
Transfer-Encoding 是用于两个传输节点之间传递“传输”编码方式的。两个节点要进行相对应的编码和解码。但不会改变原数据的编码。
例如,A 传输数据到 C,中间经过了代理 B 。 即,A -> B -> C
。其中,A 和 B 支持 gzip 编码,但 C 不支持 gzip 编码。则 A -> B
的过程,可以使用 Transfer-Encoding: gzip 进行传输,但 B 要做解码操作,然后把解码后的原数据直接传给 C 。具体步骤如下:
- A 生成需要传输的数据 d ;
- A 对 d 进行 gzip 编码得到 d1 ;
- A 把 d1 传输给 B (使用 Transfer-Encoding: gzip);
- B 接收 d1 ;
- B 解码 d1 得到原来的数据 d;
- B 把 d 传输个 C (不使用 Transfer-Encoding);
- C 接收 d 。
也就是说,Content-Encoding 描述了要传输的数据的某种属性;而 Transfer-Encoding 描述的是数据的传输方式,即数据进行某种编码后再传输,或者把数据分块后再传输。
下面是一些关于 Accept-Encoding、Content-Encoding、 TE、Transfer-Encoding 的资料。直接复制的这里的内容。
Some Links to RFC 2616
Note
Except where otherwise noted, content on this site is licensed under a
Creative Commons Attribution 4.0 International license
.