内容编码与HTTP中的传输编码

时间:2014-06-26 06:45:55

标签: http rfc2616

我对Content-Encoding和Transfer-Encoding的使用有疑问:

如果我的理解是正确的,请告诉我:

请求中的客户端可以使用accept-encoding标头指定它愿意接受的编码类型。因此,如果服务器希望在传输之前对消息进行编码,例如。 gzip,它可以压缩实体(内容)并添加内容编码:gzip并通过HTTP响应发送。在接收时,客户端可以接收和解压缩并解析实体。

如果是传输编码,客户端可以指定它愿意接受哪种编码并在飞行中执行其操作。即如果客户发送TE:gzip; q = 1,这意味着如果服务器希望,它可以使用Transfer-Encoding发送200 OK:gzip并且当它尝试发送流时,它可以压缩和发送,并且客户端在接收到内容后,可以在运行时解压缩执行解析。

我的理解是在这里吗?请评论。

此外,在飞行中压缩实体与首先压缩实体然后将其传输的基本优势是什么?传输编码是否仅对分块响应有效,因为我们在传输之前不知道实体的大小?

1 个答案:

答案 0 :(得分:4)

差异实际上与动态无关 - 内容编码既可以预先计算也可以在运行中。

区别在于:

  • 传输编码是逐跳的,而不是端到端的
  • 转移" chunked"以外的编码(遗憾的是)在实践中没有实施
  • 传输编码位于消息层,有效负载层上的内容编码
  • 使用内容编码会影响实体标记等。

请参阅http://greenbytes.de/tech/webdav/rfc7230.html#transfer.codingshttp://greenbytes.de/tech/webdav/rfc7231.html#data.encoding