Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

En-tête Accept-Encoding

Baseline Widely available *

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.

L'en-tête HTTP Accept-Encoding de requête et réponse indique le codage du contenu (généralement un algorithme de compression) que l'émetteur peut comprendre. Dans les requêtes, le serveur utilise la négociation de contenu pour sélectionner l'un des encodages proposés par le client et informe ce dernier de son choix via l'en-tête de réponse Content-Encoding. Dans les réponses, il fournit des informations sur les codages de contenu que le serveur peut comprendre dans les messages vers la ressource demandée, afin que l'encodage puisse être utilisé dans les requêtes ultérieures vers cette ressource. Par exemple, Accept-Encoding est inclus dans une réponse 415 Unsupported Media Type si une requête vers une ressource (par exemple, PUT) utilise un encodage non pris en charge.

Même si le client et le serveur prennent en charge les mêmes algorithmes de compression, le serveur peut choisir de ne pas compresser le corps d'une réponse si la valeur identity est également acceptable. Cela se produit dans deux cas courants :

  1. Les données sont déjà compressées, donc une seconde compression ne réduira pas la taille des données transmises, et peut même parfois l'augmenter. C'est le cas des formats d'images déjà compressés (comme JPEG).
  2. Le serveur est surchargé et ne peut pas allouer de ressources de calcul pour effectuer la compression. Par exemple, Microsoft recommande de ne pas compresser si un serveur utilise plus de 80% de sa puissance de calcul.

Tant que les directives identity;q=0 ou *;q=0 n'interdisent pas explicitement la valeur identity (c'est-à-dire aucune compression), le serveur ne doit jamais retourner une erreur 406 Not Acceptable.

Note : L'IANA maintient une liste officielle des codages de contenu (angl.). Les encodages bzip et bzip2 ne sont pas standards, mais peuvent être utilisés dans certains cas, notamment pour la compatibilité avec des systèmes anciens.

Type d'en-tête En-tête de requête, En-tête de réponse
En-tête de requête interdit Oui

Syntaxe

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: *

// Plusieurs algorithmes, pondérés avec la syntaxe de valeur de qualité :
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5

Directives

gzip

Un format de compression utilisant le codage Lempel-Ziv (LZ77) avec une somme de contrôle CRC 32 bits.

compress

Un format de compression utilisant l'algorithme Lempel-Ziv-Welch (LZW).

deflate

Un format de compression utilisant la structure zlib avec l'algorithme de compression [deflate]https://fr.wikipedia.org/wiki/Deflate).

br

Un format de compression utilisant l'algorithme Brotli.

zstd

Un format de compression utilisant l'algorithme Zstandard.

dcb Expérimental

Un format utilisant l'algorithme Dictionary-Compressed Brotli (angl.). Voir Compression Dictionary Transport.

dcz Expérimental

Un format utilisant l'algorithme Dictionary-Compressed Zstandard (angl.). Voir Compression Dictionary Transport.

identity

Indique la fonction identité (c'est-à-dire sans modification ni compression). Cette valeur est toujours considérée comme acceptable, même si elle est omise.

* (joker)

Correspond à tout codage de contenu non déjà listé dans l'en-tête. C'est la valeur par défaut si l'en-tête n'est pas présent. Cette directive n'implique pas que tout algorithme est pris en charge, mais indique qu'aucune préférence n'est exprimée.

;q= (pondération qvalues)

Toute valeur est placée dans un ordre de préférence exprimé à l'aide d'une valeur de qualité relative appelée poids.

Exemples

Valeurs Accept-Encoding par défaut

La navigation dans un navigateur envoie généralement la valeur d'en-tête de requête Accept-Encoding suivante :

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

Valeurs Accept-Encoding pondérées

L'exemple suivant montre les préférences Accept-Encoding à l'aide d'une valeur de qualité comprise entre 0 (priorité la plus basse) et 1 (priorité la plus haute). La compression Brotli est pondérée à 1.0, ce qui fait de br le premier choix du client, suivi de gzip à la priorité 0.8, puis de tout autre codage de contenu à 0.1 :

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

Spécifications

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

Compatibilité des navigateurs

Voir aussi