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

Lesezeit: 5 Minuten

Benutzer-Avatar
Hinweis Kronen

Was ist der Unterschied zwischen diesen Headern?

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

Welche ist die beste und warum?

Bitte sagen Sie nicht, dass sie identisch sind – wenn sie identisch wären, wären sie nicht drei gewesen. Ich weiß, dass beide funktionieren – aber ich würde gerne den Unterschied wissen.

  • Der Unterschied ist auch ein klassischer Grund, warum Ihre Skripte nicht komprimiert werden. Stellen Sie sicher, dass Sie einen Eintrag in httpCompression für den tatsächlichen Typ haben, den Sie bedienen, und beachten Sie, dass IIS Express standardmäßig nur application/x-javascript und text/* komprimiert.

    – Risiko

    9. Februar 2015 um 1:38 Uhr


  • NB: Eine vollständige Liste der “Javascript-Mime-Typen” finden Sie hier: html.spec.whatwg.org/multipage/…. dh dies ist die Liste der Werte, die ein Browser für a zulassen sollte script Stichworte type Attribut, wenn die nosniff Richtlinie angegeben ist. developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…

    – JohnLBevan

    4. Oktober 2017 um 12:40 Uhr


Benutzer-Avatar
QUentin

text/javascript veraltet ist und application/x-javascript war experimentell (daher die x- Präfix) für eine Übergangszeit bis application/javascript standardisiert werden könnten.

Du solltest benutzen application/javascript. Dokumentiert ist dies in der RFC.

Soweit ein Browser betroffen ist, gibt es keinen Unterschied (zumindest in HTTP-Headern). Dies war nur eine Änderung, damit die text/* und application/* MIME-Typ-Gruppen hatten nach Möglichkeit eine einheitliche Bedeutung. (text/* MIME-Typen sind für von Menschen lesbare Inhalte gedacht, JavaScript ist nicht darauf ausgelegt, Menschen direkt Bedeutung zu vermitteln).

Beachten Sie, dass mit application/javascript in dem type -Attribut eines script-Elements führt dazu, dass das Skript in einigen älteren Browsern ignoriert wird (da es sich um eine unbekannte Sprache handelt). Entweder weiter verwenden text/javascript dort oder lassen Sie das Attribut ganz weg (was in HTML 5 erlaubt ist).

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

  • vielen dank für die ausführliche antwort. Ein weiteres Problem – Sie haben gesagt, dass ich es vollständig weglassen kann (nur HTML5?) – aber meine Frage (die später von jemandem bearbeitet wurde) betraf speziell JS in PHP – wird es als PHP/JS-Kombination auf allen Servern/Browsern funktionieren? wenn ich es ganz weglasse??

    – Obmerk Kronen

    12. März 2012 um 9:39 Uhr


  • Die kannst du weglassen type Attribut auf einen <script> Element. Sie können die nicht auslassen Content-Type HTTP-Header … immer (wenn Sie ihn nicht in PHP angeben, wird PHP standardmäßig text/html was sehr falsch ist).

    – QUentin

    12. März 2012 um 9:47 Uhr

  • Sollte CSS nach der für Menschen lesbaren Logik nicht auch unter Anwendung und nicht unter Text eingeordnet werden?

    – Fabrício Matté

    20. Februar 2014 um 1:18 Uhr


  • @frnhr Ihre Bearbeitung dieser Antwort hat die beabsichtigte Bedeutung geändert (was besagt, dass text/javascript ist veraltet u application/x-javascript war experimentell). Schlimmer noch, es ließ den Anfang der Antwort inkohärent zurück, mit einem Blockspruch text/javascript ohne ersichtlichen Grund einfach irrelevant oben in der Antwort herumhängen.

    – Mark Amery

    4. August 2015 um 13:52 Uhr


  • Verwenden Sie in SVN auf jeden Fall Text/Javascript. SVN behandelt alles, was NICHT mit text/ beginnt, als binär. Um Ihre gesamte SVN-Arbeitskopie zu reparieren, müssen Sie eine mime.cmd-Datei erstellen, die Folgendes enthält: @echo off for /r . %%X in (*.js) do ( svn propset svn:mime-type text/javascript "%%X" ) was bei seiner Ausführung den MIME-Typ aller JS-Dateien in Ihrem Repository in Text/Javascript ändert. Anschließend müssen Sie die JS-Dateien mit dem neuen MIME-Typ an SVN übergeben.

    – Mark Eldridge

    2. Juni 2016 um 14:20 Uhr


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 werden. du solltest es vermeiden.

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

Allerdings ist die vollständig korrekter MIME-Typ für Javascript ist

application/javascript

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

  • Alte Antwort, aber ich weiß nicht, ob es gut ist, mit kurzen offenen Tags zu beginnen, bis dies keine bewährte Methode ist (wir empfehlen Ihnen dringend, PHP-SOT tatsächlich zu deaktivieren).

    – Benftwc

    25. September 2017 um 16:13 Uhr

Laut RFC 4329 sollte der richtige MIME-Typ für JavaScript sein application/javascript. Ältere IE-Versionen verschlucken sich jedoch daran, da sie erwarten text/javascript.

  • Soweit mir bekannt ist, gibt IE keinen Affen, was der HTTP-Inhaltstyp sagt; nur was das HTML type Attribut sagt (und in den HTML 5-Entwürfen kann dieses Attribut für JavaScript weggelassen werden).

    – QUentin

    12. März 2012 um 9:22 Uhr

  • @ Quentin ahh … das hat mir Probleme bereitet. Vielen Dank!

    – Martin

    10. August 2018 um 7:51 Uhr

Verwenden Sie type=”application/javascript”

Bei HTML5 ist das type-Attribut veraltet, Sie können es entfernen. Hinweis: Laut w3.org ist es standardmäßig “text/javascript”, daher würde ich vorschlagen, “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 Parameter charset darf nicht angegeben werden. Der Standardwert, der verwendet wird, wenn das Attribut fehlt, ist “text/javascript”.

Verwenden Sie “application/javascript”, weil “text/javascript” ist veraltet:

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

  1. Bereitgestellte Scripting-Medientypen und Kompatibilität

    Verschiedene nicht registrierte Medientypen wurden ad hoc verwendet, um in ECMAScript und JavaScript geschriebene Programme zu kennzeichnen und auszutauschen. Diese beinhalten:

    +————————————————————- —-+ | Text/Javascript | text/ekmaskript | | text/javascript1.0 | text/javascript1.1 | | text/javascript1.2 | text/javascript1.3 | | text/javascript1.4 | text/javascript1.5 | | text/jscript | Text/Liveskript | | text/x-javascript | text/x-ecmascript | | Anwendung/x-Javascript | application/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 “veraltet”. Verwendung von experimentellen und
von nicht registrierten Medientypen, wie oben teilweise aufgeführt, wird abgeraten.
Die Medientypen,

  * application/javascript
  * application/ecmascript

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

Dieses Dokument definiert gleichwertige Verarbeitungsanforderungen für die
Typen text/javascript, text/ecmascript und application/javascript.
Nutzung und Unterstützung des Medientyps application/ecmascript ist
deutlich weniger verbreitet als andere in definierte Mediengattungen
dieses Dokument. Dieses Dokument nutzt dies zu seinem Vorteil und definiert
strengere Verarbeitungsregeln für diesen Typ, um mehr Interoperabilität zu fördern
wird bearbeitet.

x-Javascript ist experimentell, verwenden Sie es nicht.

1311280cookie-checkUnterschied zwischen den Inhaltstypen application/x-javascript und text/javascript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy