Accept-Encoding header

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Der HTTP-Anforderungsheader Accept-Encoding request und response header gibt die Inhaltskodierung (normalerweise ein Kompressionsalgorithmus) an, die der Absender verstehen kann. Bei Anfragen verwendet der Server die Inhaltsaushandlung, um eines der Kodierungsangebote des Clients auszuwählen und teilt dem Client diese Auswahl mit dem Content-Encoding Antwort-Header mit. In Antworten liefert es Informationen darüber, welche Inhaltskodierungen der Server in Nachrichten an die angeforderte Ressource verstehen kann, sodass die Kodierung in nachfolgenden Anfragen an die Ressource verwendet werden kann. Zum Beispiel ist Accept-Encoding in einer 415 Unsupported Media Type-Antwort enthalten, wenn eine Anfrage an eine Ressource (z.B. PUT) eine nicht unterstützte Kodierung verwendet hat.

Selbst wenn sowohl der Client als auch der Server dieselben Kompressionsalgorithmen unterstützen, kann der Server entscheiden, den Körper einer Antwort nicht zu komprimieren, wenn der identity-Wert ebenfalls akzeptabel ist. Dies tritt in zwei häufigen Fällen auf:

  1. Die Daten sind bereits komprimiert, was bedeutet, dass eine zweite Kompression den Umfang der übertragenen Daten nicht verringern wird und in einigen Fällen sogar die Größe des Inhalts erhöhen kann. Dies gilt für vorab komprimierte Bildformate (z.B. JPEG).
  2. Der Server ist überlastet und kann keine Rechenressourcen zur Durchführung der Kompression bereitstellen. Beispielsweise empfiehlt Microsoft, nicht zu komprimieren, wenn ein Server mehr als 80% seiner Rechenleistung nutzt.

Solange die Direktiven identity;q=0 oder *;q=0 den identity-Wert, der keine Kodierung bedeutet, nicht explizit verbieten, darf der Server niemals einen 406 Not Acceptable-Fehler zurückgeben.

Hinweis: Die IANA pflegt eine Liste der offiziellen Inhaltskodierungen. Die Kodierungen bzip und bzip2 sind nicht standardmäßig, können jedoch in einigen Fällen verwendet werden, insbesondere zur Unterstützung älterer Systeme.

Header-Typ Anforderungs-Header, Antwort-Header
Verbotener Anforderungs-Header Ja

Syntax

http
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: zstd
Accept-Encoding: dcb
Accept-Encoding: dcz
Accept-Encoding: identity
Accept-Encoding: *

// Multiple algorithms, weighted with the quality value syntax:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5

Direktiven

gzip

Ein Kompressionsformat, das die Lempel-Ziv-Kodierung (LZ77) mit einer 32-Bit-CRC verwendet.

compress

Ein Kompressionsformat, das den Lempel-Ziv-Welch (LZW) Algorithmus verwendet.

deflate

Ein Kompressionsformat, das die zlib Struktur mit dem deflate Kompressionsalgorithmus verwendet.

br

Ein Kompressionsformat, das den Brotli Algorithmus verwendet.

zstd

Ein Kompressionsformat, das den Zstandard Algorithmus verwendet.

dcb Experimentell

Ein Format, das den Dictionary-Compressed Brotli Algorithmus verwendet. Siehe Kompressionswörterbuch-Transport.

dcz Experimentell

Ein Format, das den Dictionary-Compressed Zstandard Algorithmus verwendet. Siehe Kompressionswörterbuch-Transport.

identity

Gibt die Identitätsfunktion an (d.h. ohne Modifikation oder Kompression). Dieser Wert wird immer als akzeptabel betrachtet, selbst wenn er weggelassen wird.

* (Wildcard)

Passt zu jeder Inhaltskodierung, die nicht bereits im Header aufgeführt ist. Dies ist der Standardwert, wenn der Header nicht vorhanden ist. Diese Direktive schlägt nicht vor, dass ein Algorithmus unterstützt wird, sondern zeigt an, dass keine Präferenz ausgedrückt wird.

;q= (qvalues Gewichtung)

Jeder Wert wird in einer Reihenfolge der Präferenz unter Verwendung eines relativen Qualitätswertes platziert, der Gewicht genannt wird.

Beispiele

Standardwerte von Accept-Encoding

Die Browser-Navigation hat typischerweise den folgenden Accept-Encoding Anforderungs-Header-Wert:

http
GET /en-US/ HTTP/2
Host: developer.mozilla.org
Accept-Encoding: gzip, deflate, br, zstd

Gewichtete Accept-Encoding-Werte

Der folgende Header zeigt Accept-Encoding-Präferenzen, indem er einen Qualitätswert zwischen 0 (niedrigste Priorität) und 1 (höchste Priorität) verwendet. Die Brotli-Kompression ist mit 1.0 gewichtet und macht br zur ersten Wahl des Clients, gefolgt von gzip mit 0.8 Priorität und dann jede andere Inhaltskodierung mit 0.1:

http
Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1

Spezifikationen

Specification
HTTP Semantics
# field.accept-encoding
Zstandard Compression and the 'application/zstd' Media Type
# name-content-encoding

Browser-Kompatibilität

Siehe auch