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 (normalerweise ein Kompressionsalgorithmus) an, die der Absender verstehen kann. In Anfragen verwendet der Server die Inhaltsverhandlung, um einen der Kodierungsvorschläge vom Client auszuwählen und informiert den Client über diese Wahl mit dem Content-Encoding
Response-Header. In Antworten gibt er Informationen darüber, welche Inhaltskodierungen der Server in Nachrichten an die angeforderte Ressource verstehen kann, damit die Kodierung in zukünftigen Anfragen an die Ressource verwendet werden kann. Zum Beispiel kann dies in der Antwort auf eine PUT
-Anfrage an eine Ressource gesendet werden, die 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 Wert identity
auch akzeptabel ist. Dies geschieht in zwei häufigen Fällen:
- Die Daten sind bereits komprimiert, was bedeutet, dass eine zweite Runde der Kompression die Größe der übertragenen Daten nicht reduzieren wird und in manchen Fällen die Größe des Inhalts tatsächlich erhöhen kann. Dies gilt für vorab komprimierte Bildformate (z.B. JPEG).
- Der Server ist überlastet und kann keine Rechenressourcen bereitstellen, um die Kompression durchzuführen. Zum Beispiel 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
, was keine Codierung bedeutet, nicht ausdrücklich verbieten, darf der Server niemals einen 406 Not Acceptable
Fehler zurückgeben.
Hinweis: Die IANA pflegt eine Liste offizieller Inhaltskodierungen.
Die bzip
und bzip2
Kodierungen sind nicht standardisiert, können jedoch in einigen Fällen verwendet werden, insbesondere für die Unterstützung älterer Systeme.
Header-Typ | Request-Header, Response-Header |
---|---|
Verbotener Header-Name | 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 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.
identity
-
Gibt die Identitätsfunktion an (d.h. ohne Modifikation oder Kompression). Dieser Wert wird immer als akzeptabel angesehen, selbst wenn er weggelassen wird.
*
(Wildcard)-
Entspricht jeder Inhaltskodierung, die nicht bereits im Header aufgelistet ist. Dies ist der Standardwert, wenn der Header nicht vorhanden ist. Diese Direktive deutet nicht darauf hin, dass irgendein Algorithmus unterstützt wird, sondern dass keine Präferenz ausgedrückt wird.
;q=
(q-Werte Gewichtung)-
Jeder Wert wird in einer Reihenfolge der Präferenz ausgedrückt, die mit einem relativen Qualitätswert, genannt Gewicht, angegeben wird.
Beispiele
Standardwerte für Accept-Encoding
Browser-Navigation hat typischerweise den folgenden Wert für den Accept-Encoding
Request-Header:
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). Die 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
BCD tables only load in the browser
Siehe auch
- HTTP Inhaltsverhandlung
- Ein Header mit dem Ergebnis der Inhaltsverhandlung:
Content-Encoding
- Andere ähnliche Header:
TE
,Accept
,Accept-Language
- Brotli-Kompression
- GZip-Kompression
- Zstandard-Kompression