À l'exception du document html, actuellement, tous les fichiers (css, javascript et images) fournis par mon serveur Web ne spécifient pas le content-type
dans l'en-tête de la réponse http. Je remarque ceci alors que j’ai l’intention de supprimer l’attribut type
de ma balise script
et de ma balise link
, mais j’ai trouvé cette réponse qui dit ce qui suit :
Le type MIME est également envoyé via l'en-tête HTTP Content-Type. Par conséquent, l'utilisation de type = "text/css" ne constituerait que des octets supplémentaires.
Oui . Par le protocole HTTP, clause 7.2.1 :
“Tout message HTTP/1.1 contenant un corps d'entité DEVRAIT inclure un champ d'en-tête Content-Type définissant le type de média de ce corps. Si et seulement si le type de média n'est pas indiqué par un champ Content-Type, le destinataire PEUT essayer de deviner le type de média en inspectant son contenu et/ou les extensions de nom de l'URI utilisé pour identifier la ressource. ”
Donc, oui, les en-têtes de réponse doivent contenir Content-Type
en-tête pour toutes les données de réponse (appelées "entité-corps" dans le protocole, souvent "fichier" en langage commun). S'il est omis, le navigateur est autorisé à émettre ses propres hypothèses sur le type de données qu'il a reçues. Dans de nombreux contextes, le risque de suppositions erronées est négligeable, mais ce n'est pas une bonne excuse pour violer le protocole.
Des attributs tels que type=text/css
et type=text/javascript
n'ont pas été nécessaires, sauf par des spécifications formelles, ni même utiles. Même si un serveur envoie de manière incorrecte, par exemple, Données CSS sans Content-Type
, les navigateurs les traiteront comme CSS si <link rel=stylesheet ...>
était l'élément à l'origine de la demande. C’est l’attribut rel
qui importe dans ce cas.