Accept-Encoding - HTTP 编辑
The Accept-Encoding
request HTTP header advertises which content encoding, usually a compression algorithm, the client is able to understand. Using content negotiation, the server selects one of the proposals, uses it and informs the client of its choice with the Content-Encoding
response header.
Even if both the client and the server supports the same compression algorithms, the server may choose not to compress the body of a response, if the identity
value is also acceptable. Two common cases lead to this:
- The data to be sent is already compressed and a second compression won't lead to smaller data to be transmitted. This may be the case with some image formats;
- The server is overloaded and cannot afford the computational overhead induced by the compression requirement. Typically, Microsoft recommends not to compress if a server uses more than 80% of its computational power.
As long as the identity
value, meaning no encoding, is not explicitly forbidden, by an identity;q=0
or a *;q=0
without another explicitly set value for identity, the server must never send back a 406
Not Acceptable
error.
An IANA registry maintains a complete list of official content encodings.
- Two others content encoding,
bzip
andbzip2
, are sometimes used, though not standard. They implement the algorithm used by these two UNIX programs. Note that the first one was discontinued due to patent licensing problems.
Header type | Request header |
---|---|
Forbidden header name | yes |
Syntax
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
Directives
gzip
- A compression format using the Lempel-Ziv coding (LZ77), with a 32-bit CRC.
compress
- A compression format using the Lempel-Ziv-Welch (LZW) algorithm.
deflate
- A compression format using the zlib structure, with the deflate compression algorithm.
br
- A compression format using the Brotli algorithm.
identity
- Indicates the identity function (i.e. no compression, nor modification). This value is always considered as acceptable, even if not present.
*
- Matches any content encoding not already listed in the header. This is the default value if the header is not present. It doesn't mean that any algorithm is supported; merely that no preference is expressed.
;q=
(qvalues weighting)- Any value is placed in an order of preference expressed using a relative quality value called weight.
Examples
Accept-Encoding: gzip Accept-Encoding: gzip, compress, br Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
Specifications
Specification | Title |
---|---|
RFC 7231, section 5.3.4: Accept-Encoding | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context |
Browser compatibility
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
See also
- HTTP content negotiation
- Header with the result of the content negotiation:
Content-Encoding
- Other similar headers:
TE
,Accept
,Accept-Charset
,Accept-Language
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论