有人说Transport
将自动处理Content-Encoding
(例如从resp.Body
读取时自动解压缩)。
也有人说,Content-Encoding
是一个端到端的HTTP标头,而不是逐跳的标头。
因此,如果代理将Content-Encoding
复制回客户端的响应标头,并且该代理还对上游响应主体io.Copy
进行了编码(由于io.Copy
将从resp.Body
读取,它可能会自动解压缩),这是否会与客户端不一致? (从上游响应复制了Content-Encoding
,但正文已解压缩)
最佳答案
通常,代理不应更改Content-Encoding响应标头。
相同URI的不同编码被视为不同的表示形式,并且具有不同的ETag。因此,更改Content-Encoding在缓存中不能很好地发挥作用。
但是,如果它是您自己的代理服务器,并且是您自己的生态系统中的客户端,则可以这样做,因为您知道发生了什么事情,因此,如果代理服务器将数据解压缩回客户端,则需要剥离Content-Encoding标头。
关于http - HTTP代理是否应将Content-Encoding header 复制回客户端?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39367100/