HTTP客户端指示HTTP服务器禁用gzip响应的规范方法是什么?

HTTP客户端指示HTTP服务器禁用gzip响应的规范方法是什么?,http,compression,gzip,http-accept-encoding,Http,Compression,Gzip,Http Accept Encoding,我以为这是一个简单的谷歌搜索,但显然我错了 我知道你们应该提供: Accept-Encoding: gzip;q=0,deflate;q=0 在请求头中。然而,建议它的文章也指出代理通常会忽略这个标题。另外,当我将它提供给nginx时,它仍然压缩响应消息体 那么,如何告诉web服务器禁用响应消息正文上的压缩?许多web服务器忽略了“q”参数。静态资源的压缩版本通常被缓存,并在请求接受时返回。要避免获取压缩资源,请使用 Accept-Encoding: identity 服务器不应在此实例中

我以为这是一个简单的谷歌搜索,但显然我错了

我知道你们应该提供:

Accept-Encoding: gzip;q=0,deflate;q=0
在请求头中。然而,建议它的文章也指出代理通常会忽略这个标题。另外,当我将它提供给nginx时,它仍然压缩响应消息体


那么,如何告诉web服务器禁用响应消息正文上的压缩?

许多web服务器忽略了“q”参数。静态资源的压缩版本通常被缓存,并在请求接受时返回。要避免获取压缩资源,请使用

Accept-Encoding: identity

服务器不应在此实例中为您提供资源的压缩表示。也不应该有任何代理人。如果没有给出,这是默认的接受编码,但是您的客户端可能会添加一个默认的接受gzip的编码,因此显式地提供“identity”应该可以做到这一点

(二)

这是给Nginx的

(一)

听起来您需要什么取决于您计划使用的服务器。剩下的就看你了

请注意,nginx模块都允许关闭解压缩:

[edit] gzip 
Syntax: gzip on | off  
Default: off 
Context: http
server
location
if in location 
Reference: gzip 



Enables or disables gzip compression. 
与代理人打交道:

[edit] gzip_proxied 
Syntax: gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ... 
Default: off 
Context: http 
server
location 
Reference: gzip_proxied 



It allows or disallows the compression of the response for the proxy request in the dependence on the request and the response. The fact that, request proxy, is determined on the basis of line "Via" in the headers of request. In the directive it is possible to indicate simultaneously several parameters: 

off - disables compression for all proxied requests 
expired - enables compression, if the "Expires" header prevents caching 
no-cache - enables compression if "Cache-Control" header is set to "no-cache" 
no-store - enables compression if "Cache-Control" header is set to "no-store" 
private - enables compression if "Cache-Control" header is set to "private" 
no_last_modified - enables compression if "Last-Modified" isn't set 
no_etag - enables compression if there is no "ETag" header 
auth - enables compression if there is an "Authorization" header 
any - enables compression for all requests 
[edit] gzip_types 
致以最良好的祝愿

资料来源:

(一)


2) (输出解压缩部分)

是否希望完全禁用编码?
然后跳过http请求头中的接受编码头本身。

您希望http响应中只缺少gzip压缩吗?
然后从http请求头的值列表中跳过gzip


您希望优先考虑服务器支持的不同压缩技术吗?然后使用0和1之间的不同值以及接受编码http请求头中每个值的q参数。(当前您使用的是冲突值,并通过权重=0表示您不知道如何管理,但您希望响应无论如何都进行编码)

我感到困惑:您想从客户端向服务器发送指令吗,你想要的是保证通过任何不情愿的代理的东西,还是希望指令告诉服务器在任何情况下都不要压缩?后者。。。我希望指令告诉服务器不要在任何情况下压缩,为了防止所有压缩,您可能需要使用
*;q=0
而不是仅仅禁止gzip和放气。话虽如此,我确实认为许多服务器不必像它们应该的那样为接受编码特性而烦恼。还有
接受编码:identity
…不幸的是,nginx似乎并不尊重这一点。我仍然得到了gzip压缩的内容。请注意,no
Accept Encoding
不是等同于标识。文档清楚地表明,如果没有指定编码,服务器可以决定要做什么。对于代理,考虑从其缓存服务的内容的接受编码HTTP报头,不同的HTTP响应头与HTTP请求头一起使用,例如接受编码作为其值列表,因此,代理知道要提供的缓存副本会根据http请求标头的不同而有所不同。NO.W3C规范()明确指出,“如果请求中不存在接受编码字段,服务器可能会假定客户端将接受任何内容编码。”另外“注意:如果请求不包含接受编码字段,并且“内容编码不可用,则首选HTTP/1.0客户端通常理解的内容编码(即“gzip”和“压缩”);“您错过了中间语句”在本例中,如果“标识”是可用的内容编码之一,则服务器应使用“标识”内容编码,除非它有其他信息表明不同的内容编码对客户端有意义。因此,这张便条充其量只是最后的手段。另外,IETF是互联网协议(包括http)的权威,在回答这个问题时,http1.1是标准。对于像您这样的奇怪的和边缘的情况,我想在这篇评论中提到链接就足够了。我的观点是,确保GZIP响应被禁用的标准方法是指定Accept-encoding:identity。据我所知,任何其他响应(包括您的不通过接受编码头)都可能不起作用。根据IETF标准引用的句子,您关于规范“方式”的假设与您的假设是错误的。