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-Type

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.

L' HTTP Content-Type est utilisé pour indiquer le type de média original d'une ressource avant qu'un encodage de contenu ne soit appliqué.

Dans les réponses, l'en-tête Content-Type informe le client du type de média des données retournées. Dans les requêtes telles que POST ou PUT, le client utilise l'en-tête Content-Type pour définir le type de contenu envoyé au serveur. Si une implémentation ou une configuration serveur est stricte concernant la gestion du type de contenu, une réponse d'erreur client 415 peut être retournée.

L'en-tête Content-Type diffère de Content-Encoding en ce que Content-Encoding aide le destinataire à comprendre comment décoder les données vers leur forme originale.

Note : Cette valeur peut être ignorée si les navigateurs effectuent de la détection MIME (ou de la détection de contenu) sur les réponses. Pour empêcher les navigateurs d'utiliser le MIME sniffing, définissez la valeur de l'en-tête X-Content-Type-Options à nosniff. Consultez Vérification du type MIME pour plus de détails.

Type d'en-tête En-tête de représentation
En-tête de requête interdit Non
En-tête de réponse autorisé pour le CORS Oui
En-tête de requête autorisé pour le CORS Oui*

* Les valeurs ne peuvent pas contenir un octet d'en-tête de requête non sécurisé pour le CORS (angl.) : "():<>?@[\]{},, supprimer 0x7F, et les caractères de contrôle 0x00 à 0x19 sauf Tabulation 0x09. La valeur doit aussi avoir un type de média analysé (en ignorant les paramètres) qui soit application/x-www-form-urlencoded, multipart/form-data ou text/plain.

Syntaxe

Content-Type: <media-type>

Par exemple :

http
Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=ExampleBoundaryString

Directives

<media-type>

Le type MIME de la ressource ou des données. Peut contenir les paramètres suivants :

  • charset : Indique le standard d'encodage des caractères utilisé. La valeur n'est pas sensible à la casse, mais la forme minuscule est préférée.
  • boundary : Pour les entités fragmentées (multipart), le paramètre boundary est requis. Il sert à délimiter les différentes parties du message. La valeur est composée de 1 à 70 caractères (ne se terminant pas par un espace) connus pour être robustes dans le contexte de différents systèmes (par exemple, les passerelles email). Souvent, la limite d'en-tête est précédée de deux tirets dans le corps de la requête, et la limite finale a deux tirets ajoutés à la fin.

Exemples

Diffuser les ressources avec le bon type de contenu

Dans les deux exemples de réponses suivants, les ressources JavaScript et CSS sont diffusées avec text/javascript pour JavaScript et text/css pour CSS. Le type de contenu correct pour ces ressources aide le navigateur à les traiter de façon plus sécurisée et avec de meilleures performances. Voir Configurer correctement les types MIME du serveur pour plus d'informations.

http
HTTP/1.1 200
content-encoding: br
content-type: text/javascript; charset=utf-8
vary: Accept-Encoding
date: Fri, 21 Jun 2024 14:02:25 GMT
content-length: 2978

const videoPlayer=document.getElementById...
http
HTTP/3 200
server: nginx
date: Wed, 24 Jul 2024 16:53:02 GMT
content-type: text/css
vary: Accept-Encoding
content-encoding: br

.super-container{clear:both;max-width:100%}...

Content-Type dans les formulaires multipart

Dans une requête POST issue de la soumission d'un formulaire HTML, le Content-Type de la requête est précisé par l'attribut enctype de l'élément HTML <form>.

html
<form action="/toto" method="post" enctype="multipart/form-data">
  <input
    type="text"
    name="description"
    value="Description de la valeur du champ" />
  <input type="file" name="monFichier" />
  <button type="submit">Envoyer</button>
</form>

La requête ressemble à peu près à l'exemple suivant, certains en-têtes ayant été omis pour plus de clarté. Dans la requête, une limite ExampleBoundaryString est utilisée à titre d'exemple, mais en pratique, le navigateur génère une chaîne plus proche de ---------------------------1003363413119651595289485765.

http
POST /toto HTTP/1.1
Content-Length: 68137
Content-Type: multipart/form-data; boundary=ExampleBoundaryString

--ExampleBoundaryString
Content-Disposition: form-data; name="description"

Description input value
--ExampleBoundaryString
Content-Disposition: form-data; name="monFichier"; filename="toto.txt"
Content-Type: text/plain

[contenu du fichier toto.txt choisi par l'utilisateur·ice]
--ExampleBoundaryString--

Content-Type dans les soumissions de formulaires encodés dans l'URL

Quand les formulaires ne comportent pas de téléversement de fichiers et utilisent des champs simples, les formulaires encodés dans l'URL peuvent être plus pratiques, car les données du formulaire sont incluses dans le corps de la requête :

html
<form action="/submit" method="post">
  <label for="comment">Commentaire&nbsp;:</label>
  <input type="text" id="comment" name="comment" value="Bonjour !" />
  <button type="submit">Enoyver</button>
</form>
http
POST /submit HTTP/1.1
Host: exemple.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 15

comment=Bonjour%20!

Content-Type dans une API REST utilisant JSON

De nombreuses API REST utilisent application/json comme type de contenu, ce qui est pratique pour la communication entre machines ou l'interaction programmée. L'exemple suivant montre une réponse 201 Created illustrant le résultat d'une requête réussie :

http
HTTP/1.1 201 Created
Content-Type: application/json

{
  "message": "Nouvel utilisateur créé",
  "user": {
    "id": 123,
    "firstName": "Sandra",
    "lastName": "Smith",
    "email": "s.smith@exemple.com"
  }
}

Spécifications

Specification
HTTP Semantics
# status.206
HTTP Semantics
# field.content-type

Compatibilité des navigateurs

Voir aussi