Accept-Encoding

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.

Der HTTP-Accept-Encoding-Anfrage- und Antwortheader gibt die Inhaltskodierung (in der Regel ein Kompressionsalgorithmus) an, die der Sender verstehen kann. Bei Anfragen verwendet der Server die Inhaltsverhandlung, um eine der Kodierungsvorschläge des Clients auszuwählen, und informiert den Client mit dem Content-Encoding-Antwortheader über diese Auswahl. Bei Antworten liefert er Informationen darüber, welche Inhaltskodierungen der Server bei Nachrichten an die angeforderte Ressource verstehen kann, so dass 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 geschieht in zwei häufigen Fällen:

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

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

Hinweis: IANA pflegt eine Liste der offiziellen Inhaltskodierungen. Die Kodierungen bzip und bzip2 sind nicht standardisiert, können aber in einigen Fällen, insbesondere für Legacy-Unterstützung, verwendet werden.

Header-Typ Anfrageheader, Antwortheader
Verbotener Header-Name Ja

Syntax

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

Direktiven

gzip

Ein Kompressionsformat, das die Lempel-Ziv-Kodierung (LZ77) mit einem 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.

identity

Gibt die Identitätsfunktion an (das heißt, ohne Änderung oder Kompression). Dieser Wert wird immer als akzeptabel angesehen, auch wenn er weggelassen wird.

* (Wildcard)

Entspricht 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 geäußert wird.

;q= (q-Werte-Gewichtung)

Jeder Wert wird in einer Präferenzordnung ausgedrückt, die durch einen relativen Qualitätswert, genannt Gewicht, ausgedrückt wird.

Beispiele

Standardwerte von Accept-Encoding

Die Navigation im Browser hat typischerweise den folgenden Accept-Encoding-Anfrageheader-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 unter Verwendung eines Qualitätswerts zwischen 0 (niedrigste Priorität) und 1 (höchste Priorität). Brotli-Kompression wird mit 1.0 gewichtet, was br zur ersten Wahl des Clients macht, gefolgt von gzip mit 0.8 Priorität und dann jeder anderen 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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch