http - Windows 8 显然从压缩的 HTTP 响应中删除了内容编码 header

标签 http windows-8 http-headers http-compression

我不完全确定这是否属于 SO,但我不知道还能去哪里问。

当我检查我的网络应用程序的加载速度时,我注意到显然没有 HTTP 响应(无论是什么类型 - html、css、js)是 gzip/deflate 压缩的。也就是说,任何请求中都没有像“Content-Encoding: gzip”这样的响应 header ,并且浏览器报告资源未压缩。

  • 在多个浏览器(IE10、FF 17、Chrome 23、Opera 12.10、Safari 5.x)中测试和确认
  • 在两台运行 Windows 8 Pro 的机器上测试并确认
  • 使用 Fiddler 仔细检查 - 响应未压缩且不包含内容编码 header
  • 这不仅发生在我的网络应用程序上,没有我测试过的其他网站似乎发送压缩响应(根据浏览器)
  • 在 Windows 7 上,响应到达时已压缩并带有所有 header
  • HTTPS 响应压缩

这是响应 header 的示例(注意缺少内容编码 header ): response headers on client machine

我还检查了服务器端。服务器正在运行 Windows Server 2008 R2/IIS 7.5。我使用失败请求跟踪来找出服务器发送的内容。资源似乎被压缩了:

server side compression

此外,服务器似乎发送了正确的 header :

compression headers

我的结论:一定是 Windows 8 介入了这里。显然它修改了 HTTP 响应。我假设 Windows 8 正在接收压缩响应,将其解压缩,删除内容编码 header 并将修改后的响应进一步传递到管道中。

现在我的问题:

  • 任何人都可以确认 Windows 8 修改了 HTTP 响应并且它按照我描述的方式工作吗?
  • 有没有办法监控甚至禁用此行为?

预先感谢您的回答。

问候, 安德烈


更新: 我使用 Wireshark 查看到达客户端的内容。正如我所料,资源被压缩并且内容编码 header 仍然存在。下图显示了 wireshark 协议(protocol),右下角显示了 Chrome 收到的响应。

wireshark

这证实了我的假设,即 Windows 8 正在干预。

最佳答案

原来罪魁祸首是我的防病毒软件 Avast,更具体地说是集成实时网络防护。关闭它会导致响应在浏览器中再次显示为压缩状态。

仍然有趣的是,Avast 也在 Windows 7 机器上运行,即使在我的测试期间这些机器上的响应在适用的地方被压缩。

关于http - Windows 8 显然从压缩的 HTTP 响应中删除了内容编码 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516844/

相关文章:

PHP 检查是否有可能获得 SSL

android - 将 JSON 数据从 android 发送到 compojure 服务器

xaml - 在 Windows 8 中过滤 GridView

javascript - 如何在 Metro Windows 8 中找到应用栏的图标?

apache - 使 groovy 请求接受 404 -- 错误 : hudson. AbortException:失败:返回的代码 404 不在接受范围内:[[100‥399]]

rest - 使用 Http 406 返回什么?

python - httmock 在运行 tox 时不拦截 requests.send()

http - 使用 AJP/Tomcat 6.0 设置最大 HTTP header 大小

c# - Web Api 的 CreateResponse<Content>() 和 CreateResponse() 之间有什么区别吗?

c# - GridView 可以在没有包装 ScrollViewer 的情况下垂直滚动吗?