区分Transfer-Encoding,TE,Content-Encoding,Accept-Encoding四个首部字段

Transfer-Encoding:用于指定传输报文主体时使用的编码方式,属于逐跳首部,即只在两个节点间有效
TE:用于告知服务器客户端能够处理的编码方式和相对优先级,属于逐跳首部,即只在两个节点间有效
Content-Encoding:用于指定报文主体已经采用的编码方式,属于端到端首部,即在整个传输过程中有效
Accept-Encoding:用于告知服务器客户端能够处理的编码方式和相对优先级,属于端到端首部,即在整个传输过程中有效
很显然,Transfer-Encoding和TE是一组,Content-Encoding和Accept-Encoding是一组。
根本区别在于,Content-Encoding和Accept-Encoding限制的是报文主体在整个传输过程中使用的编码方式,全局有效;Transfer-Encoding和TE限制的是报文主体在两个节点间(源服务器和代理服务器之间、代理服务器和客户端之间等)传输时使用的编码方式,只在两节点间有效。举例说明:
假设A为服务器,D为客户端,从A到D的路径为A-B-C-D,所需传输的资源为X。步骤如下:
(1)D向A请求X,并在请求报文中指明自己支持的编码方式为gzip;

Accept-Encoding:gzip

(2)请求按路径传递到A处,A将X用gzip编码进行压缩并发到B处,由B进行下一步转交,并在报文中指明使用的编码方式为gzip;

Content-Encoding:gzip

(3)B认为传给C时使用分块传输比较合理,就对A传过来的报文实体进行分块,并在报文中说明:

Content-Encoding:gzip
Transfer-Encoding:chunked

(4)C收到B的报文,并根据Transfer-Encoding:chunked判断出B进行了分块传输,于是C对收到的各个分块进行重组,还原出完整的X(注意此时的X还是被gzip压缩过的状态)。之后C不进行分块,直接将整个发送给D:

Content-Encoding:gzip

(5)D接收到响应报文,并根据Content-Encoding:gzip判断出报文实体已经被gzip压缩过了,于是对其进行解码,最终获得资源X。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值