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

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

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

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

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

 JohnLBevan04 окт. 2017 г., 14:40
NB: Полный список «типов mime javascript» можно найти здесь:html.spec.whatwg.org/multipage/..., то есть это список значений, которые браузер должен учитыватьscript тегаtype атрибут, когдаnosniff директива указана.developer.mozilla.org/en-US/docs/Web/HTTP/Headers/...
 rism09 февр. 2015 г., 02:38
Разница также является классической причиной, по которой ваши скрипты не сжимаются. Убедитесь, что у вас есть запись в httpCompression для фактического типа, который вы обслуживаете, и обратите внимание, что IIS Express сжимает только application / x-javascript и text / * по умолчанию.

Ответы на вопрос(4)

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

 Ben Cassinat25 сент. 2017 г., 18:13
Старый ответ, но не знаю, будет ли это хорошо начинать с коротких открытых тегов, пока это не лучшая практика (мы настоятельно рекомендуем вам отключить PHP-SOT)
Решение Вопроса

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.

 Quentin12 мар. 2012 г., 10:47
Вы можете опуститьtype атрибут на<script> элемент. Вы не можете опуститьContent-Type HTTP-заголовок ... когда-либо (если вы не укажете его в PHP, PHP по умолчанию будетtext/html что очень неправильно).
 Obmerk Kronen12 мар. 2012 г., 10:39
Большое спасибо за подробный ответ. Еще одна проблема - вы сказали, что я могу опустить его полностью (только HTML5?), - но мой вопрос (который позже был отредактирован кем-то) был конкретно о JS в PHP - будет ли он работать как PHP / JS combo на всех серверах / браузерах если я опущу это полностью ??
 Mark Amery04 авг. 2015 г., 15:52
@frnhr ваше редактирование этого ответа изменило предполагаемое значение (которое должно было заявить, чтоtext/javascript устарел иapplication/x-javascript был экспериментальным). Хуже того, он оставил начало ответа бессвязным, с блок-поговоркойtext/javascript просто бесполезно тусоваться в верхней части ответа без видимой причины.
 Mark Eldridge02 июн. 2016 г., 16:20
В SVN обязательно используйте text / javascript. SVN рассматривает все, что НЕ начинается с text /, как двоичный файл. Чтобы исправить всю вашу рабочую копию SVN, вам нужно создать файл mime.cmd, содержащий следующее:@echo off for /r . %%X in (*.js) do ( svn propset svn:mime-type text/javascript "%%X" ) который при выполнении изменит тип mime всех файлов JS в вашем хранилище на text / javascript. Затем вы должны зафиксировать файлы JS в SVN с новым типом mime.
 Fabrício Matté20 февр. 2014 г., 02:18
Следуя понятной человеку логике, не следует ли классифицировать CSS и в приложении, а не в тексте?

application/javascript, Howerver, старые версии IE душат это, так как они ожидаютtext/javascript.

 martin10 авг. 2018 г., 09:51
@ Квентин, ааа ... это то, что доставляло мне неприятности. Спасибо!
 Quentin12 мар. 2012 г., 10:22
Насколько я знаю, IE не дает обезьянам то, что говорит тип контента HTTP; только то, что HTMLtype Атрибут говорит (и в черновиках HTML 5 этот атрибут может быть опущен для JavaScript).

Используйте 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», потому что«текст / 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 и текст /
ecmascript но помечает их как "устаревшие". Использование экспериментальных и
Незарегистрированные типы носителей, как указано в части выше, не рекомендуется.
Типы носителей,

  * application/javascript
  * application/ecmascript

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

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

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

Ваш ответ на вопрос