Разница между типами содержимого application / x-javascript и text / javascript - PullRequest
229 голосов
/ 12 марта 2012

В чем разница между этими заголовками?

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

Какой из них лучше и почему?

Пожалуйста, не говорите, что они идентичны - если бы они были идентичны, то не было бытрое из них.Я знаю обе работы - но я хотел бы знать разницу.

Ответы [ 4 ]

305 голосов
/ 12 марта 2012

text/javascript устарел, а application/x-javascript был экспериментальным (следовательно, префикс x-) в течение переходного периода, пока application/javascript не может быть стандартизирован.

Вы должны использовать application/javascript. Это задокументировано в RFC .

Что касается браузеров, то здесь нет разницы (по крайней мере, в заголовках HTTP). Это было просто изменение, так что группы типов text/* и application/* MIME имели постоянное значение, где это возможно. (text/* MIME-типы предназначены для читабельного контента, JavaScript не предназначен для прямой передачи смысла людям).

Обратите внимание, что использование application/javascript в атрибуте type элемента script приведет к игнорированию сценария (как на неизвестном языке) в некоторых старых браузерах. Либо продолжайте использовать text/javascript там, либо полностью пропустите атрибут (что разрешено в HTML 5).

Это не проблема для заголовков HTTP, поскольку браузеры повсеместно (насколько я знаю) либо полностью игнорируют сценарии типа содержимого HTTP, либо достаточно современны, чтобы распознавать application/javascript.

21 голосов
/ 12 марта 2012

MIME-типы, начинающиеся с x-, не стандартизированы.В случае с Javascript он немного устарел.Дополнительно для второго фрагмента кода

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

необходимо включить short_open_tags.вам следует избегать этого.

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

Однако, полностью правильный mime-тип для javascript:

application/javascript

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

8 голосов
/ 12 марта 2012

Согласно RFC 4329 правильный тип MIME для JavaScript должен быть application/javascript. Однако старые версии IE задыхаются от этого, поскольку ожидают text/javascript.

3 голосов
/ 30 ноября 2016

Use type = "application / javascript"

В случае HTML5 атрибут type устарел, вы можете удалить его.Обратите внимание: по умолчанию он имеет значение «text / javascript» в соответствии с w3.org, поэтому я бы предложил добавить «application / javascript» вместо его удаления.

http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
Атрибут type дает язык сценария или формат данных.Если атрибут присутствует, его значение должно быть допустимым типом MIME.Параметр charset не должен быть указан.По умолчанию, который используется, если атрибут отсутствует, является «text / javascript».

Используйте «application / javascript», потому что «text / javascript» устарел :

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

Развернутые скриптовые типы носителей и совместимость

Различные незарегистрированные типы носителей использовались специальным образом для маркировки и обмена программами, написанными на ECMAScript и JavaScript.К ним относятся:

+ ----------------------------------------------------- + |текст / JavaScript |текст / экмаскрипт ||text / javascript1.0 |текст / javascript1.1 ||текст / javascript1.2 |текст / javascript1.3 ||текст / javascript1.4 |текст / javascript1.5 ||текст / jscript |текст / сценарий жизни ||текст / x-javascript |текст / x-ecmascript ||application / x-javascript |application / x-ecmascript ||приложение / JavaScript |приложение / экмаскрипт |+ ----------------------------------------------------- +

Использование «текстового» типа верхнего уровня для этого вида контента проблематично.Таким образом, этот документ определяет текст / javascript и text /
ecmascript, но помечает их как «устаревшие».Использование экспериментальных и
незарегистрированных типов носителей, как указано в приведенной выше части, не рекомендуется.
Типы носителей,

  * application/javascript
  * application/ecmascript

, которые также определены в этом документе, предназначены для общего использования иследует использовать вместо этого.

В этом документе определяются эквивалентные требования к обработке для
типов text / javascript, text / ecmascript и application / javascript.
Использование и поддержка типа носителя application / ecmascript
значительно менее распространен, чем для других типов носителей, определенных в
этого документа.Используя это в своих интересах, этот документ определяет
более строгие правила обработки для этого типа, чтобы способствовать более совместимой
обработке.

x-javascript является экспериментальным, не используйте его.

...