Accept-Encoding:gzip 和 Content-Encoding:gzip

Accept-Encoding:gzip and Content-Encoding:gzip

这两个HTTP有什么区别headers?

Accept-Encoding:

这是一个请求header。 HTTP 客户端使用这个 header 来告诉服务器它支持哪种编码。允许服务器以这些编码中的任何一种发送响应内容。

From MDN

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.

Content-Encoding:

这是一个回应header。 HTTP 服务器使用此 header 来告诉客户端内容实际编码的特定编码。

From MDN

The Content-Encoding entity header is used to compress the media-type. When present, its value indicates which encodings were applied to the entity-body. It lets the client know, how to decode in order to obtain the media-type referenced by the Content-Type header.

如果您想观看它们的实际效果,请在 Firefox / Chrome 中打开 Inspect Element,然后检查 Network 选项卡以观看它们的实际效果。在请求 headers 中查找 Accept-Encoding 并在响应 headers 中查找 Content-Encoding

Accept-Encoding

换句话说 IETF 互联网标准 RFC-7231,用户代理可以使用 Accept-Encoding 请求 header 字段来发出请求,指示响应中可接受的响应 content-codings .

Accept-Encoding header 可能相当复杂,例如

Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0

https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.4

Content-Encoding

Content-Encoding 响应 header 字段指示已将哪些内容编码应用于响应表示。 Content-Encoding 主要用于允许压缩响应实体而不丢失其底层媒体类型的标识。

Content-Encoding 值很简单,应附有“Vary”header,例如

Content-Encoding: gzip
Vary: Accept-Encoding

https://datatracker.ietf.org/doc/html/rfc7231#section-3.1.2.2