Разница между типами контента application / x-javascript и text / javascript

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

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

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

4 ответов


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

вы должны использовать application/javascript. это описано в RFC.

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

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

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


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


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


использовать type= "application / javascript"

в случае HTML5 атрибут type устарел, его можно удалить. Примечание: по умолчанию используется "текст / javascript" в соответствии с w3.org, поэтому я бы предложил добавить "приложение / javascript" вместо его удаления.

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

используйте "application / javascript", потому что " текст/javascript " устарел:

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

  1. развернутые типы носителей сценариев и совместимость

    в Ad-hoc использовались различные незарегистрированные типы носителей способ маркировки и обмена программами, написанными на ECMAScript и Яваскрипт. К ним относятся:

    +-----------------------------------------------------+ / текст / javascript / текст / ecmascript | / text / javascript1.0 / текст / javascript1.1 | / text / javascript1.2 / Текст / javascript1.3 | / text / javascript1.4 / текст / javascript1.5 | | текст / jscript / текст / livescript | / текст/x-javascript / текст/X-ecmascript | / приложение/X-javascript / приложение/x-ecmascript | / приложение / javascript / приложение / ecmascript | +-----------------------------------------------------+

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

  * application/javascript
  * application/ecmascript

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

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

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