web-dev-qa-db-ger.com

Unterschied zwischen den Inhaltstypen application / x-javascript und text / javascript

Was ist der Unterschied zwischen diesen Headern?

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

Welches ist das Beste und warum?

Sagen Sie bitte nicht, dass sie identisch sind - wenn sie identisch wären, hätten es nicht drei von ihnen gegeben. Ich kenne beide Arbeiten - aber ich möchte den Unterschied kennen.

230
Obmerk Kronen

text/javascript Ist veraltet und application/x-javascript War für eine Übergangszeit experimentell (daher das Präfix x-), Bis application/javascript Standardisiert werden konnte.

Sie sollten application/javascript Verwenden. Dies ist in RFC dokumentiert =.

Für einen Browser gibt es keinen Unterschied (zumindest bei HTTP-Headern). Dies war nur eine Änderung, sodass die MIME-Typgruppen text/* Und application/* Nach Möglichkeit eine einheitliche Bedeutung hatten. (text/* MIME-Typen sind für vom Menschen lesbare Inhalte vorgesehen. JavaScript ist nicht dafür ausgelegt, dem Menschen direkt Bedeutung zu vermitteln.).

Beachten Sie, dass die Verwendung von application/javascript Im Attribut type eines Skriptelements dazu führt, dass das Skript in einigen älteren Browsern ignoriert wird (da es in einer unbekannten Sprache vorliegt). Verwenden Sie dort entweder weiterhin text/javascript Oder lassen Sie das Attribut ganz weg (was in HTML 5 erlaubt ist).

Dies ist in HTTP-Headern kein Problem, da Browser allgemein (soweit mir bekannt ist) entweder den HTTP-Inhaltstyp von Skripten vollständig ignorieren oder modern genug sind, um application/javascript Zu erkennen.

305
Quentin

mIME-Typen beginnend mit x- sind nicht standardisiert. Im Falle von Javascript ist es irgendwie veraltet. Zusätzlich das zweite Code-Snippet

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

erfordert short_open_tags aktiviert sein. du solltest es vermeiden.

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

Allerdings ist der vollständig korrekte MIME-Typ für Javascript

application/javascript

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

21
KingCrunch

Laut RFC 4329 sollte der korrekte MIME-Typ für JavaScript application/javascript Sein. Wie auch immer, ältere IE Versionen verschlucken sich daran, da sie text/javascript Erwarten.

8
Björn

Verwenden Sie type = "application/javascript"

Im Falle von HTML5 ist das type-Attribut veraltet. Sie können es entfernen. Beachten Sie, dass laut w3.org standardmäßig "text/javascript" verwendet wird. Daher würde ich empfehlen, "application/javascript" hinzuzufügen, anstatt es zu entfernen.

http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
Das type-Attribut gibt die Sprache des Skripts oder das Format der Daten an. Wenn das Attribut vorhanden ist, muss sein Wert ein gültiger MIME-Typ sein. Der charset-Parameter darf nicht angegeben werden. Die Standardeinstellung, die verwendet wird, wenn das Attribut fehlt, lautet "text/javascript".

Verwenden Sie "application/javascript", da "text/javascript" veraltet ist :

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

  1. Bereitgestellte Skriptmedientypen und Kompatibilität

    Verschiedene nicht registrierte Medientypen wurden ad-hoc verwendet, um in ECMAScript und JavaScript geschriebene Programme zu kennzeichnen und auszutauschen. Diese schließen ein:

    + ------------------------------------------------- ---- + | text/javascript | text/ecmascript | | text/javascript1.0 | text/javascript1.1 | | text/javascript1.2 | text/javascript1.3 | | text/javascript1.4 | text/javascript1.5 | | text/jscript | Text/Livescript | | text/x-javascript | text/x-ecmascript | | anwendung/x-javascript | anwendung/x-ecmascript | | anwendung/javascript | anwendung/ecmascript | + ------------------------------------------------- ---- +

Die Verwendung des Top-Level-Typs "Text" für diese Art von Inhalten ist bekanntermaßen problematisch. Dieses Dokument definiert somit Text/Javascript und Text /
ecmascript markiert sie aber als "obsolet". Verwendung von experimentellen und
Von nicht registrierten Medientypen, wie oben in Teil aufgeführt, wird abgeraten.
Die Medientypen,

  * application/javascript
  * application/ecmascript

die ebenfalls in diesem Dokument definierten Begriffe sind für den allgemeinen Gebrauch bestimmt und sollten stattdessen verwendet werden.

Dieses Dokument definiert gleichwertige Verarbeitungsanforderungen für die
gibt text/javascript, text/ecmascript und application/javascript ein.
Nutzung und Support des Medientyps application/ecmascript ist
deutlich weniger verbreitet als bei anderen in
dieses Dokument. Aus diesem Grund definiert dieses Dokument
strengere Verarbeitungsregeln für diesen Typ, um die Interoperabilität zu fördern
wird bearbeitet.

x-javascript ist experimentell, benutze es nicht.

3
juFo