Windows 8似乎从压缩的HTTP响应中删除了content-encoding头

12

我不完全确定这个问题是否适合在SO上提问,但是我不知道其他地方去问了。

当我检查我的Web应用程序的加载速度时,我注意到似乎没有任何HTTP响应(无论是什么类型 - html、css、js)被gzip/deflate压缩。也就是说,没有任何响应头像"Content-Encoding: gzip"一样出现在任何请求中,浏览器报告该资源未被压缩。

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

这是一个响应头的例子(请注意缺少内容编码标头): response headers on client machine

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

server side compression

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

compression headers

我的结论是:这一定是Windows 8在干预。显然,它修改HTTP响应。我想Windows 8收到压缩的响应,对其进行解压缩,删除内容编码标头,然后将修改后的响应传递到管道中。

现在我的问题:

  • 有人能确认Windows 8是否修改HTTP响应并且它的工作方式和我描述的一样吗?
  • 有没有一种方法可以监视甚至禁用这种行为?
  • 提前感谢您的回答。

    问候, 安德烈


    更新: 我使用Wireshark查看客户端接收到的内容。正如我所预期的那样,资源被压缩,并且内容编码头仍然存在。下面的图像显示了wireshark协议,在右下角显示了Chrome接收到的响应。

    wireshark

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


    你在客户端使用Wireshark检查过网络层面吗?也许是你的ISP的问题。 - Jon Skeet
    你的网络中是否有代理服务器或高级路由器?它们可能会解压数据以进行检查,并将解压缩后的响应发送给你。 - CodeCaster
    1
    我在完全相同的网络上,即相同的互联网提供商和相同的网络基础设施上,使用Windows 8和Windows 7机器进行了测试。我将尝试使用Wireshark深入挖掘网络流量,看看能找到什么。 - Andre Loker
    1
    我在我的问题中更新了Wireshark协议:响应以压缩形式到达,并带有内容编码头,但在浏览器中仍然显示为非压缩的。我真的很好奇Windows在这里做了什么。 - Andre Loker
    1个回答

    9

    事实证明,罪魁祸首是我的杀毒软件Avast,更具体地说是集成的实时网络防护功能。关闭它会导致浏览器中的响应再次压缩。

    令人感兴趣的是,即使在运行Windows 7的机器上,Avast也在运行,但在我的测试中,当适用时,响应仍然被压缩。


    1
    我有同样的问题。但是在关闭了我的杀毒软件之后,浏览器仍然没有出现压缩。 - Light
    我也遇到了完全相同的问题,我怀疑是微软的Windows Defender或者其中一个高度可疑的“安全更新”,而不是我的杀毒软件。是的,我已经禁用了杀毒软件,但问题仍然存在。 - jerhewet

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接