title | slug | l10n | ||
---|---|---|---|---|
Accept-Encoding |
Web/HTTP/Headers/Accept-Encoding |
|
{{HTTPSidebar}}
Accept-Encoding
请求 HTTP 标头表示客户端能够理解的内容编码(通常是某种压缩算法)。服务器使用内容协商从中选择一个提议,并通过 {{HTTPHeader("Content-Encoding")}} 响应标头告知客户端这一选择。
即使客户端和服务器都支持相同的压缩算法,在 identity
值可以被接受的情况下,服务器也可以选择不对响应体进行压缩。导致出现这种情况的常见原因有两个:
- 要发送的数据已经经过压缩,再次压缩不会减少传输的数据量。这适用于预先压缩过的图像格式(如 JPEG)。
- 服务器过载,无法分配计算资源来进行压缩。例如,微软建议如果服务器使用超过其计算能力的 80%,则不应进行压缩。
只要 identity;q=0
或 *;q=0
指令不明确禁止表示无编码的 identity
值,服务器就绝对不应返回 {{HTTPStatus("406")}} Not Acceptable
错误。
Note
- IANA 维护了一个完整的官方支持的编码方式列表。
- 另外两种内容编码
bzip
和bzip2
有时也会被使用。这两种非标准编码实现了这两个 UNIX 程序所使用的算法。请注意,由于专利许可问题,bzip
已被弃用。
标头类型 | {{Glossary("Request header", "请求标头")}} |
---|---|
{{Glossary("Forbidden header name", "禁止修改的标头")}} | 是 |
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: zstd
Accept-Encoding: identity
Accept-Encoding: *
// 使用{{Glossary("Quality Values", "质量价值")}}语法对多个算法进行加权:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
gzip
- : 一种使用 Lempel-Ziv 编码(LZ77)压缩算法,以及 32 位 CRC 校验的压缩格式。
compress
- : 一种使用 Lempel-Ziv-Welch(LZW)算法的压缩格式。
deflate
br
- : 一种使用 Brotli 算法的压缩格式。
zstd
- : 一种使用 Zstandard 算法的压缩格式。
identity
- : 表示恒等函数(即不作任何修改或压缩)。即使省略,此值始终被视为是可接受的。
*
- : 匹配其他任意未在该请求标头字段中列出的编码方式。假如该请求标头字段不存在的话,这个值是默认值。它并不代表任意算法都支持,而仅仅表示算法之间无优先次序。
;q=
(q 值加权)- : 任何值都按照使用称为权重的相对质量价值表达的优先级顺序排列。
Accept-Encoding: gzip
Accept-Encoding: gzip, compress, br
Accept-Encoding: gzip, compress, br, zstd
Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
{{Specifications}}
{{Compat}}
- HTTP 内容协商
- 包含有内容协商结果的响应标头:{{HTTPHeader("Content-Encoding")}}
- 其他相似的请求标头:{{HTTPHeader("TE")}}、{{HTTPHeader("Accept")}}、{{HTTPHeader("Accept-Language")}}
- {{Glossary("Brotli compression", "Brotli 压缩")}}
- {{Glossary("GZip compression", "GZip 压缩")}}
- {{Glossary("Zstandard compression", "Zstandard 压缩")}}