web-dev-qa-db-fra.com

Différence entre les types de contenu application / x-javascript et text / javascript

Quelle est la différence entre ces en-têtes?

Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript

Lequel est le meilleur et pourquoi?

S'il vous plaît ne dites pas qu'ils sont identiques - s'ils étaient identiques, il n'y en aurait pas eu trois. Je sais que les deux fonctionnent, mais j'aimerais connaître la différence.

230
Obmerk Kronen

text/javascript est obsolète et application/x-javascript était expérimental (d'où le préfixe x-) pendant une période transitoire jusqu'à ce que application/javascript puisse être normalisé.

Vous devez utiliser application/javascript. Ceci est documenté dans le RFC .

En ce qui concerne les navigateurs, il n'y a pas de différence (au moins dans les en-têtes HTTP). Il s'agissait simplement d'un changement pour que les groupes de type text/* et application/* MIME aient une signification cohérente dans la mesure du possible. (text/* Les types MIME sont destinés à un contenu lisible par un humain, JavaScript n'est pas conçu pour transmettre directement une signification à un humain).

Notez que si vous utilisez application/javascript dans l'attribut type d'un élément de script, le script sera ignoré (dans une langue inconnue) dans certains navigateurs plus anciens. Continuez à utiliser text/javascript ici ou omettez complètement l'attribut (ce qui est autorisé dans HTML 5).

Ce n'est pas un problème dans les en-têtes HTTP, car les navigateurs universellement (à ma connaissance) ignorent totalement le contenu de type contenu HTTP des scripts ou sont suffisamment modernes pour reconnaître application/javascript.

305
Quentin

les types mime commençant par x- ne sont pas normalisés. En cas de javascript, c'est un peu obsolète. Ajout du deuxième extrait de code

<?Header('Content-Type: text/javascript');?>

nécessite que short_open_tags soit activé. vous devriez l'éviter.

<?php Header('Content-Type: text/javascript');?>

Cependant, le type complètement correct pour javascript est

application/javascript

http://www.iana.org/assignments/media-types/application/index.html

21
KingCrunch

Selon RFC 4329, le type MIME correct pour JavaScript doit être application/javascript. Cependant, les anciennes versions de IE jettent les bases de _ car elles s’attendent à text/javascript.

8
Björn

Utilisez type = "application/javascript"

Dans le cas de HTML5, l'attribut type est obsolète, vous pouvez le supprimer. Remarque: par défaut, il utilise "text/javascript" selon w3.org. Je suggérerais donc d'ajouter "application/javascript" au lieu de le supprimer.

http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
L'attribut type donne la langue du script ou le format des données. Si l'attribut est présent, sa valeur doit être un type MIME valide. Le paramètre charset ne doit pas être spécifié. La valeur par défaut, utilisée si l'attribut est absent, est "text/javascript".

Utilisez "application/javascript", car "text/javascript" est obsolète :

RFC 4329: http://www.rfc-editor.org/rfc/rfc4329.txt

  1. Types de média de script déployés et compatibilité

    Divers types de supports non enregistrés ont été utilisés de manière ad hoc pour étiqueter et échanger des programmes écrits en ECMAScript et JavaScript. Ceux-ci inclus:

    + ----------------------------------------------------- ---- + | texte/javascript | texte/ecmascript | | texte/javascript1.0 | text/javascript1.1 | | text/javascript1.2 | text/javascript1.3 | | texte/javascript1.4 | texte/javascript1.5 | | texte/jscript | texte/script de vie | | text/x-javascript | text/x-ecmascript | | application/x-javascript | application/x-ecmascript | | application/javascript | application/ecmascript | + ----------------------------------------------------- ---- +

L'utilisation du type "texte" de niveau supérieur pour ce type de contenu est connue pour être problématique. Ce document définit donc text/javascript et text /
ecmascript, mais les marque comme "obsolètes". Utilisation de techniques expérimentales et
les types de supports non enregistrés, comme indiqué en partie ci-dessus, sont déconseillés.
Les types de médias,

  * application/javascript
  * application/ecmascript

qui sont également définis dans ce document, sont destinés à un usage courant et doivent être utilisés à la place.

Ce document définit les exigences de traitement équivalentes pour
tape text/javascript, text/ecmascript et application/javascript.
L'utilisation et le support du type de support application/ecmascript est
considérablement moins répandue que pour les autres types de médias définis
ce document. Utilisant cela à son avantage, ce document définit
règles de traitement plus strictes pour ce type afin de favoriser une plus grande interopérabilité
En traitement.

x-javascript est expérimental, ne l'utilisez pas.

3
juFo