我对Content-Encoding和Transfer-Encoding的使用有疑问:
如果我的理解是正确的,请告诉我:
请求中的客户端可以使用accept-encoding标头指定它愿意接受的编码类型。因此,如果服务器希望在传输之前对消息进行编码,例如。 gzip,它可以压缩实体(内容)并添加内容编码:gzip并通过HTTP响应发送。在接收时,客户端可以接收和解压缩并解析实体。
如果是传输编码,客户端可以指定它愿意接受哪种编码并在飞行中执行其操作。即如果客户发送TE:gzip; q = 1,这意味着如果服务器希望,它可以使用Transfer-Encoding发送200 OK:gzip并且当它尝试发送流时,它可以压缩和发送,并且客户端在接收到内容后,可以在运行时解压缩执行解析。
我的理解是在这里吗?请评论。
此外,在飞行中压缩实体与首先压缩实体然后将其传输的基本优势是什么?传输编码是否仅对分块响应有效,因为我们在传输之前不知道实体的大小?
答案 0 :(得分:4)
差异实际上与动态无关 - 内容编码既可以预先计算也可以在运行中。
区别在于:
请参阅http://greenbytes.de/tech/webdav/rfc7230.html#transfer.codings和http://greenbytes.de/tech/webdav/rfc7231.html#data.encoding。