对 Content-Encoding 和 Transfer-Encoding 的初级理解

本文详细解析了HTTP中的Content-Encoding与Transfer-Encoding的区别及应用。前者用于指定数据的编码方式,后者则涉及数据传输过程中的编码与解码操作。文章通过实例说明了它们如何在客户端与服务器间发挥作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的理解
========

Content-Encoding 是用于在数据源和数据最终接收者之间传递编码方式的。中间代理
(如果有的话)不会去试图解码,而只是原样传输。甚至最终接收者在保存内容的时候,
也是原样保存的。典型的情况是 http 下载 gzip 格式的压缩包。

Transfer-Encoding 是用于两个传输节点之间传递“传输”编码方式的。两个节点要进行
相对应的编码和解码。但不会改变原数据的编码。

例如,A 传输数据到 C,中间经过了代理 B 。 即,A -> B -> C 。其中,A 和 B 支持
gzip 编码,但 C 不支持 gzip 编码。则 A -> B 的过程,可以使用
Transfer-Encoding: gzip 进行传输,但 B 要做解码操作,然后把解码后的原数据直接
传给 C 。具体步骤如下:

> 1. A 生成需要传输的数据 d ;
> 2. A 对 d 进行 gzip 编码得到 d1 ;
> 3. A 把 d1 传输给 B (使用 Transfer-Encoding: gzip);
> 4. B 接收 d1 ;
> 5. B 解码 d1 得到原来的数据 d;
> 6. B 把 d 传输个 C (不使用 Transfer-Encoding);
> 7. C 接收 d 。

也就是说,Content-Encoding 描述了要传输的数据的某种属性;而 Transfer-Encoding
描述的是数据的传输方式,即数据进行某种编码后再传输,或者把数据分块后再传输。

下面是一些关于 Accept-Encoding、Content-Encoding、 TE、Transfer-Encoding 的资料。直接复制的[url=https://bugzilla.mozilla.org/show_bug.cgi?id=68517]这里[/url]的内容。

Some Links to RFC 2616
======================

* 3.5 Content Codings

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.5[/url]

* 3.6 Transfer Codings

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6[/url]

* 4.3 Message Body

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3[/url]

* 14.3 Accept-Encoding

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3[/url]

* 14.11 Content-Encoding

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11[/url]

* 14.39 TE

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.39[/url]

* 14.41 Transfer-Encoding

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.41[/url]


Note
====

* The changes from RFC 2068 regarding transfer codings

[url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.6.3[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值