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 :
- 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).
- 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
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.
dcbExpérimental-
Un format utilisant l'algorithme Dictionary-Compressed Brotli (angl.). Voir Compression Dictionary Transport.
dczExpé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 :
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 :
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
Chargement…
Voir aussi
415 Unsupported Media Type- Négociation de contenu HTTP
- Un en-tête avec le résultat de la négociation de contenu :
Content-Encoding - Autres en-têtes similaires :
TE,Accept,Accept-Language - La compression Brotli
- La compression GZip
- La compression Zstandard
- Compression Dictionary Transport guide