Guide de référence complet sur les types MIME et Content-Type
Chaque fois que votre navigateur demande un fichier à un serveur web, le serveur ne se contente pas d'envoyer des bits et des octets. Il envoie également une « étiquette » qui indique au navigateur de quel type de fichier il s'agit. Cette étiquette est appelée Type MIME (Multipurpose Internet Mail Extensions), et elle est envoyée via l'en-tête HTTP Content-Type.
Si le serveur envoie le mauvais type MIME, votre navigateur pourrait essayer de télécharger une vidéo au lieu de la lire, ou il pourrait refuser d'exécuter un script pour des raisons de sécurité.
Tableau de référence rapide : Types MIME courants
| Type MIME | Extension courante | Catégorie | Objectif |
|---|---|---|---|
text/html |
.html, .htm |
Page Web | Contenu de page web standard |
text/css |
.css |
Style | Feuilles de style en cascade (CSS) |
application/javascript |
.js |
Logique | Scripts d'application web |
application/json |
.json |
Données | Données structurées pour les API |
application/xml |
.xml |
Données | Langage de balisage extensible (XML) |
text/csv |
.csv |
Données | Valeurs séparées par des virgules (CSV) |
image/webp |
.webp |
Média | Format d'image compressé moderne |
image/avif |
.avif |
Média | Format d'image haute efficacité |
font/woff2 |
.woff2 |
Police | Format de police web moderne |
application/wasm |
.wasm |
Compilé | Code binaire WebAssembly |
application/octet-stream |
.bin, .exe |
Binaire | Données binaires génériques (déclenche généralement un téléchargement) |
multipart/form-data |
N/A | Téléchargement | Utilisé pour soumettre des formulaires avec téléchargement de fichiers |
1. Données structurées et API
Les applications web modernes s'appuient fortement sur ces types pour échanger des informations entre le frontend et le backend.
- application/json : Le standard de l'industrie pour les API REST. Il est léger et nativement supporté par JavaScript.
- application/xml : Un format plus ancien mais plus puissant qui supporte les schémas personnalisés et la validation complexe.
- text/csv : Fréquemment utilisé pour exporter de grands ensembles de données à partir de bases de données ou de feuilles de calcul.
2. Médias et ressources
Pour garantir des temps de chargement rapides, les serveurs doivent identifier correctement les formats de médias modernes à haute compression.
- image/webp & image/avif : Ces formats modernes offrent une bien meilleure compression que le JPEG ou le PNG. Si votre serveur n'envoie pas le bon type MIME, le navigateur peut ne pas réussir à afficher l'image correctement.
- font/woff2 : Essentiel pour la typographie web. Un typage MIME correct garantit que le navigateur peut décompresser la police rapidement.
3. Données spécialisées et binaires
- application/wasm : Ceci est requis pour que WebAssembly fonctionne. Les navigateurs sont très stricts : ils refuseront souvent de compiler un module WASM si le serveur n'envoie pas explicitement le Content-Type
application/wasm. - application/octet-stream : C'est le type « fourre-tout » pour les données binaires. Si un serveur ne sait pas ce qu'est un fichier, il utilise généralement celui-ci par défaut. Les navigateurs traitent cela comme un signal pour télécharger le fichier plutôt que d'essayer de l'afficher.
4. Formulaires et téléchargements
Lorsque vous soumettez un formulaire sur un site web, le navigateur utilise un type MIME spécifique pour encoder votre saisie.
- application/x-www-form-urlencoded : La valeur par défaut pour les formulaires textuels simples. Cela ressemble à une chaîne de requête URL (
nom=Jean&age=30). - multipart/form-data : Ceci est requis lorsque votre formulaire inclut un téléchargement de fichier. Il permet au navigateur d'envoyer différents types de données (texte et fichiers binaires) dans une seule requête, séparés par des « frontières » (boundaries).
Comment vérifier le type MIME d'un fichier
- Dans le navigateur : Ouvrez les DevTools -> onglet Network. Cliquez sur une requête et cherchez « Content-Type » sous la section Response Headers.
- Sur Linux / macOS : Utilisez la commande
fileavec le drapeau--mime-type:file --mime-type -b mon-image.webp # Sortie : image/webp
Questions courantes (FAQ)
Q : Que se passe-t-il si un serveur envoie le mauvais Content-Type ?
R : Les navigateurs effectuent souvent un « MIME Sniffing » pour essayer de deviner le type correct. Cependant, pour des raisons de sécurité (comme la protection contre les attaques XSS), les navigateurs modernes deviennent beaucoup plus stricts. Si un script est envoyé avec text/plain au lieu de application/javascript, la plupart des navigateurs refuseront de l'exécuter.
Q : application/javascript est-il le seul type correct pour les fichiers JS ?
R : Historiquement, on utilisait text/javascript ou application/x-javascript. Bien que application/javascript ait été autrefois la recommandation formelle, la dernière norme est revenue à préférer text/javascript. La plupart des serveurs et navigateurs gèrent les deux sans problème.
Q : Pourquoi ai-je une erreur « No 'Content-Type' header » ?
R : Cela signifie que le serveur n'a fourni aucune information sur le type de fichier. Les navigateurs utiliseront généralement par défaut text/plain ou application/octet-stream, ce qui pourrait entraîner un affichage incorrect de votre page ou déclencher un téléchargement indésirable.
Outils connexes sur Tool3M
- Encodeur/Décodeur Base64 : Convertissez des données binaires en une URI de données (qui inclut le type MIME) pour une utilisation en HTML ou CSS.
- Formateur JSON : Validez et formatez vos données
application/json.