有人说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/

10-13 07:18