Windows 8 显然从压缩的 HTTP 响应中删除了内容编码标头 [英] Windows 8 apparently removes content-encoding header from compressed HTTP responses

查看:32
本文介绍了Windows 8 显然从压缩的 HTTP 响应中删除了内容编码标头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm not completely sure whether this belongs on SO, but I don't know where else to ask.

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

While I was checking the loading speed of a web app of mine I noticed that apparently no HTTP response (no matter what type - html, css, js) is gzip/deflate compressed. That is, no response header like "Content-Encoding: gzip" is present in any request and the browser reports that the resource is not compressed.

  • 在多种浏览器(IE10、FF 17、Chrome 23、Opera 12.10、Safari 5.x)中测试和确认
  • 在两台运行 Windows 8 Pro 的机器上测试并确认
  • 使用 Fiddler 仔细检查 - 响应未压缩且不包含内容编码标头
  • 这不仅发生在我的网络应用程序中,没有我测试的其他网站似乎发送压缩响应(根据浏览器)
  • 在 Windows 7 上,响应经过压缩并带有所有标头
  • HTTPS 响应压缩
  • tested and confirmed in multiple browsers (IE10, FF 17, Chrome 23, Opera 12.10, Safari 5.x)
  • tested and confirmed on two machines running Windows 8 Pro
  • double checked with Fiddler - the response is not compressed and does not contain a content-encoding header
  • this doesn't only happen for my web apps, no other web site I tested appears to send compressed responses (according to the browser)
  • on Windows 7 the responses arrive compressed and with all headers
  • HTTPS responses are compressed

这是响应标头的示例(请注意缺少内容编码标头):

Here's an example of the response headers (note the lack of the content-encoding header):

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

I also checked the server side. The server is running Windows Server 2008 R2/IIS 7.5. I used Failed Request Tracing to find out what the server is sending. The resource appears to be compressed:

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

Also, the server seems to send the proper headers:

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

My conclusion: it must be Windows 8 who is intervening here. Apparently it modifies HTTP responses. I suppose that Windows 8 is receiving the compressed response, decompresses it, removes the content-encoding header and passes the modified response further down the pipeline.

现在我的问题:

  • 谁能确认 Windows 8 修改了 HTTP 响应并且它按照我描述的方式工作?
  • 有没有办法监控甚至禁用这种​​行为?

提前感谢您的回答.

问候,安德烈

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

Update: I used Wireshark to see what arrives at the client. As I expected the resources are compressed and the content-encoding header is still present. The image below shows the wireshark protocol and in the bottom right the response as received by Chrome.

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

This confirms my assumption that Windows 8 is intervening.

推荐答案

原来罪魁祸首是我的杀毒软件Avast,更确切地说是集成的实时网盾.关闭它会导致响应在浏览器中再次显示为压缩状态.

It turned out that the culprit was my antivirus software, Avast, more specifically the integrated real-time network-shield. Turning it off causes responses to appear compressed in the browsers again.

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

What remains interesting is that Avast was running on the Windows 7 machines as well, even though on those machines responses where compressed where applicable during my tests.

这篇关于Windows 8 显然从压缩的 HTTP 响应中删除了内容编码标头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆