Разница между типами приложений /x -javascript и текстом/javascript

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

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

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

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

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

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

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

  * application/javascript
  * application/ecmascript

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

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

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