问题描述
我不完全确定这是否属于 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 响应中删除了内容编码标头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,WP2