Accept-Encoding
Accept-Encoding
请求 HTTP 头部指示客户端可以理解的内容编码(通常是压缩算法)。服务器使用内容协商来选择其中一个建议,并使用Content-Encoding
响应头部告知客户端其选择。
即使客户端和服务器都支持相同的压缩算法,如果 identity
值也可用,服务器可能选择不压缩响应主体。两种常见的情况导致了这种情况
- 要发送的数据已经压缩,因此第二次压缩不会减少传输的数据大小。对于预压缩的图像格式(例如 JPEG)来说这是真的;
- 服务器负载过重,无法分配计算资源来执行压缩。例如,微软建议如果服务器使用了超过 80% 的计算能力,则不要压缩。
只要 identity;q=0
或 *;q=0
指令没有明确禁止表示不进行编码的 identity
值,服务器绝不应返回406
Not Acceptable
错误。
注意
- IANA 注册表维护着官方内容编码列表。
bzip
和bzip2
编码是非标准的,但在某些情况下(包括遗留支持)可以使用。
语法
http
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: zstd
Accept-Encoding: identity
Accept-Encoding: *
// Multiple algorithms, weighted with the quality value syntax:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
指令
示例
http
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
规范
规范 |
---|
HTTP 语义 # field.accept-encoding |
浏览器兼容性
BCD 表仅在浏览器中加载
另请参阅
- HTTP 内容协商
- 包含内容协商结果的头部:
Content-Encoding
- 其他类似的头部:
TE
、Accept
、Accept-Language
- Brotli 压缩
- GZip 压缩
- Zstandard 压缩