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 :
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ètreboundaryest 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/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/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>.
<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.
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 :
<form action="/submit" method="post">
<label for="comment">Commentaire :</label>
<input type="text" id="comment" name="comment" value="Bonjour !" />
<button type="submit">Enoyver</button>
</form>
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/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
- Les en-têtes
Accept,Accept-Encoding,Accept-Language - L'en-tête
Vary - L'en-tête
Content-Encoding - L'en-tête
Content-Disposition - Le code de statut
206 Partial Content - L'en-tête
X-Content-Type-Options