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
Request-Header und Response-Header gibt die Inhaltscodierung (in der Regel ein Kompressionsalgorithmus) an, die der Sender verstehen kann. Bei Anfragen verwendet der Server die Inhaltsverhandlung, um einen der vom Client vorgeschlagenen Kodierungen auszuwählen und teilt dem Client diese Auswahl mit dem Content-Encoding
Response-Header mit. Bei Antworten gibt er an, welche Inhaltskodierungen der Server in Nachrichten zur angeforderten Ressource verstehen kann, sodass die Kodierung in nachfolgenden Anfragen zur Ressource verwendet werden kann. Beispielsweise 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 die gleichen Kompressionsalgorithmen unterstützen, kann der Server entscheiden, den Body einer Antwort nicht zu komprimieren, wenn der Wert identity
ebenfalls akzeptabel ist. Dies tritt in zwei häufigen Fällen auf:
- Die Daten sind bereits komprimiert, was bedeutet, dass eine zweite Kompressionsrunde die übertragene Datenmenge nicht verringern wird und in einigen Fällen die Größe des Inhalts tatsächlich erhöhen kann. Dies gilt für vorkomprimierte Bildformate (zum Beispiel JPEG).
- Der Server ist überlastet und kann keine Rechenressourcen zuweisen, um die Kompression durchzuführen. 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 Wert identity
nicht ausdrücklich verbieten, was keine Kodierung bedeutet, 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 verwendet werden, insbesondere für die Unterstützung älterer Systeme.
Header-Typ | Request-Header, Response-Header |
---|---|
Verbotener Request-Header | Ja |
Syntax
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 das 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.
identity
-
Gibt die Identitätsfunktion an (d.h. ohne Modifikation 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 suggeriert nicht, dass ein Algorithmus unterstützt wird, sondern zeigt an, dass keine Präferenz geäußert wird.
;q=
(q-Werte Gewichtung)-
Ein beliebiger Wert wird in einer Präferenzreihenfolge dargestellt, die durch einen relativen Qualitätswert, genannt Gewicht, ausgedrückt wird.
Beispiele
Standardmäßige Accept-Encoding Werte
Browser-Navigation enthält typischerweise den folgenden Accept-Encoding
Request-Header-Wert:
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ätswertes zwischen 0
(niedrigste Priorität) und 1
(höchste Priorität). Brotli-Kompression wird mit 1.0
gewichtet, wodurch br
die erste Wahl des Clients ist, gefolgt von gzip
mit 0.8
Priorität und dann jede andere Inhaltskodierung mit 0.1
:
Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
Spezifikationen
Specification |
---|
HTTP Semantics # field.accept-encoding |
Browser-Kompatibilität
Siehe auch
415 Unsupported Media Type
- HTTP Inhaltsverhandlung
- Ein Header mit dem Ergebnis der Inhaltsverhandlung:
Content-Encoding
- Weitere ähnliche Header:
TE
,Accept
,Accept-Language
- Brotli-Kompression
- GZip-Kompression
- Zstandard-Kompression