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 Content-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 de représentation HTTP Content-Encoding liste les encodages et l'ordre dans lequel ils ont été appliqués à une ressource. Ceci permet au·à la destinataire de savoir comment décoder les données afin d'obtenir le format de contenu d'origine décrit dans l'en-tête Content-Type. L'encodage du contenu est principalement utilisé pour compresser le contenu sans perdre d'information sur le type de média d'origine.

Les serveurs doivent compresser les données autant que possible, et utiliser l'encodage de contenu lorsque cela est approprié. Compresser des types de médias déjà compressés, comme .zip ou .jpeg, n'est généralement pas approprié car cela peut augmenter la taille du fichier. Si le média d'origine est déjà encodé (par exemple, sous forme de fichier .zip), cette information n'est pas incluse dans l'en-tête Content-Encoding.

Lorsque l'en-tête Content-Encoding est présent, les autres métadonnées (par exemple, Content-Length) se réfèrent à la forme encodée des données, et non à la ressource d'origine, sauf indication explicite. L'encodage du contenu diffère de Transfer-Encoding en ce que Transfer-Encoding gère la façon dont les messages HTTP eux-mêmes sont transmis sur le réseau de point à point.

Type d'en-tête En-tête de représentation
En-tête de requête interdit Non

Syntaxe

http
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate
Content-Encoding: br
Content-Encoding: zstd
Content-Encoding: dcb
Content-Encoding: dcz

// Plusieurs valeurs selon l'ordre dans lequel ils ont été appliqués
Content-Encoding: deflate, gzip

Directives

gzip

Un format utilisant le codage Lempel-Ziv (LZ77), avec un CRC sur 32 bits. Il s'agit du format original du programme UNIX gzip. La norme HTTP/1.1 recommande également que les serveurs prenant en charge cet encodage reconnaissent x-gzip comme alias, à des fins de compatibilité.

compress

Un format utilisant l'algorithme Lempel-Ziv-Welch (LZW). Le nom de la valeur provient du programme UNIX compress, qui implémentait cet algorithme. Comme le programme compress, qui a disparu de la plupart des distributions UNIX, ce codage de contenu n'est plus utilisé par de nombreux navigateurs aujourd'hui, en partie à cause d'un problème de brevet (expiré en 2003).

deflate

Utilise la structure zlib (définie dans la RFC 1950) avec l'algorithme de compression deflate (défini dans la RFC 1951).

br

Un format utilisant la structure d'algorithme Brotli (définie dans la RFC 7932).

zstd

Un format utilisant la structure d'algorithme Zstandard (définie dans la RFC 8878).

dcb Expérimental

Un format qui utilise l'algorithme Brotli compressé par dictionnaire (angl.). Voir Transport de dictionnaire de compression.

dcz Expérimental

Un format qui utilise l'algorithme Zstandard compressé par dictionnaire (angl.). Voir Transport de dictionnaire de compression.

Exemples

Compression avec gzip

Côté client, on peut fournir la liste des mécanismes de compression pris en charge en envoyant l'en-tête Accept-Encoding lors de la négociation de l'encodage.

http
Accept-Encoding: gzip, deflate

Le serveur répondra avec le schéma utilisé avec l'en-tête de réponse Content-Encoding.

http
Content-Encoding: gzip

À noter que le serveur n'est pas obligé d'utiliser de méthode de compression. La compression dépend fortement des paramètres du serveur et des modules de serveur utilisés.

Spécifications

Specification
HTTP Semantics
# field.content-encoding

Compatibilité des navigateurs

Voir aussi