Accept-Encoding
Accept-Encoding
Accept-Encoding
请求的 HTTP 标头通告其内容编码,通常是一个压缩算法中,客户端是能够理解的。使用内容协商,服务器选择其中一个提议,使用它并通过Content-Encoding
响应头向客户端通知其选择。
即使客户端和服务器都支持相同的压缩算法,如果身份值也可以接受,服务器可能会选择不压缩响应的主体。两种常见情况导致这种情况:
- 要发送的数据已经被压缩,并且第二次压缩不会导致传输更小的数据。这可能是一些图像格式的情况;
- 服务器过载并且无法承受由压缩需求引起的计算开销。通常,如果服务器使用80%以上的计算能力,Microsoft 建议不要进行压缩。
只要该identity
值(即没有编码)没有被明确禁止,通过一个identity;q=0
或一个*;q=0
没有明确设定的身份值,服务器就不能发回406
Not Acceptable
错误。
注:
- IANA 注册管理机构保留官方内容编码的完整列表。
- 另外两个内容编码,
bzip
并且bzip2
,有时使用,虽然不是标准。他们实现这两个 UNIX 程序使用的算法。请注意,由于专利许可问题,第一个中断。
Header type | Request header |
---|---|
Forbidden header name | yes |
语法
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *
// Multiple algorithms, weighted with the quality value syntax:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
指令
gzip
使用 Lempel-Ziv 编码( LZ77 )的压缩格式,带有32位 CRC 。
例子
Accept-Encoding: gzip
Accept-Encoding: gzip, compress, br
Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
规范
Specification | Title |
---|---|
RFC 7231, section 5.3.4: Accept-Encoding | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context |
浏览器兼容性
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |