在请求标头中接受编码:gzip,deflate,缺失,但在响应头中内容编码:存在gzip。它会导致压缩失败吗?如果是的话,该如何避免呢?
请求网址:http://something.com/something.js
请求方法:GET
状态代码:200 OK 200 OK
请求标题
Accept: */* Referer: somthing.comsomthing.aspx User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36 X-DevTools-Emulate-Network-Conditions-Client-Id: 2D3ED9B5-95BD-4984-9EEE-405C2889F11E
响应标头
Accept-Ranges: bytes Content-Encoding: gzip Content-Length: 884 Content-Type: application/x-javascript Date: Tue, 28 Oct 2014 11:09:13 GMT ETag: "0ac99ce3e9fcf1:0" Last-Modified: Mon, 14 Jul 2014 08:37:12 GMT Server: Microsoft-IIS/8.0 Vary: Accept-Encoding X-Powered-By: ASP.NET
答案 0 :(得分:1)
来自RFC 7231:
没有Accept-Encoding标头字段的请求意味着 用户代理没有关于内容编码的偏好。虽然 这允许服务器在响应中使用任何内容编码 并不意味着用户代理能够正确处理 所有编码。
简而言之:如果您未指定Accept-Encoding
,则服务器向您发送压缩内容是合法的(尽管不明智)。对于告诉Web服务器它绝对不应该压缩,似乎不是一种可靠,可靠的方法。您可以尝试使用Accept-Encoding: *;q=0
或Accept-Encoding: identity
,但对此服务的支持在网络服务器上并不普遍,代理服务器也可以解决问题。
最后,如果简单地处理压缩内容,你可能会更好一点 - 没有充分的理由让客户端不支持压缩,而且库可以免费提供。