我想检查Web服务器是否启用了http压缩,并启用了特定的压缩(即Gzip,Deflate,Compress)?
或者如果我通过将接受编码设置为"gzip,deflate"来通过.net中的WebClient对象请求数据,在处理之前如何知道检索到的数据是否被压缩?
要检查响应主体的编码是什么,您应该检查HTTP响应头:Content-Encoding.
服务器仅允许使用请求标头accept-encoding指定的编码.如果服务器无法使用指定的接受编码之一给出响应,则它必须以406(不可接受)响应.
示例请求:
GET / HTTP/1.1 Host: www.brianbondy.com Accept-Encoding: gzip,deflate
响应示例:
HTTP/1.1 200 OK Date: Thu, 04 Dec 2003 16:15:12 GMT Server: Apache/2.0 Content-Encoding: gzip Content-Length: 1533
Accept-Encoding的其他示例:
Accept-Encoding: compress, gzip Accept-Encoding: Accept-Encoding: * Accept-Encoding: compress;q=0.5, gzip;q=1.0 Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0
如何准确了解服务器上可用的编码:
无法确切知道服务器级别可用的编码,因为某些服务器可能仅支持某些文件类型的某些编码.
这意味着您可以做的最好的事情就是回答以下问题:对于请求第一行中指定的文件,该文件可用的特定编码是什么?您可以通过明确拒绝身份内容编码并指定您想要了解的编码来回答这个问题.
Accept-Encoding: gzip, identity;q=0
示例来源,HTTP RFC