Какой тип контента выполняет javascript в браузере?

Страница, которую вы сейчас просматриваете, имеет элемент заголовка HTTP Content-type: text/html. HTML отображается нормально, и JavaScript будет выполняться. Если у вас есть Content-Type: text/javascript, то JavaScript не выполняется, он только отображается.

Мой вопрос: существуют ли типы контента, отличные от text/html, которые будут выполнять JavaScript? Мне нужен как можно более полный список для любого распространенного браузера (IE, Firefox, Chrome, Safari).


person rook    schedule 19.01.2011    source источник
comment
Может быть, вы имеете в виду, какие типы содержимого способны выполнять javascript? Поскольку text/html не выполняет jasvascript, тег ‹script› внутри документа является одним из триггеров выполнения. Имейте в виду, что этот список потенциально безграничен, когда вы рассматриваете плагины и расширения для браузера.   -  person goat    schedule 20.01.2011
comment
@Rook Вы ищете альтернативу?   -  person Šime Vidas    schedule 20.01.2011
comment
@Šime Vidas @chris Мне нужен их список, это для целей контроля качества.   -  person rook    schedule 20.01.2011
comment
@Rook Обратите внимание, что разные браузеры, вероятно, распознают разные типы контента. Я не удивлюсь, если есть большая разница между IE и Safari (на Mac). Вас интересует конкретный браузер?   -  person Šime Vidas    schedule 20.01.2011
comment
@Šime Vidas Любой из распространенных браузеров.   -  person rook    schedule 20.01.2011
comment
@chris Вы совершенно правы, и было написано несколько тысяч строк кода, которые делают именно это.   -  person rook    schedule 21.01.2011


Ответы (5)


Я не знаю полного списка, и вполне возможно, что такого списка не существует в открытом доступе. Возможно, вам придется выяснить это самостоятельно. (Хотя я не думаю, что что-то говорит против создания тестовой страницы с несколькими фреймами и просьбы к сообществу SO предоставить данные с помощью соответствующих браузеров. Это было сделано раньше.)

В Internet Explorer это обязательно должно быть в списке:

Кандидаты, которые я бы проверил (поскольку вполне возможно, что небрежный программист может активировать их для синтаксического анализа HTML), включают:

  • application/form-data
  • text/xhtml+xml (было предложено в 2000 г., понятия не имею что с этим случилось)

Однако я протестировал их как с Chrome 9, так и с последней версией Firefox, и они отклоняют все, кроме text/html. Вместо этого Firefox показывает их как загружаемые ресурсы, что, я думаю, исключает их из вашего уравнения, поскольку любой JS в нем будет выполняться в локальном контексте, а не в URL-адресе. (IE выполняет для меня все, включая text/plain, но я думаю, что это путаница заголовков с моим сервером.)

Если вы хотите получить полную уверенность в браузерах с открытым исходным кодом, проверьте их исходный код или спросите в их списках рассылки/форумах. У меня такое ощущение, что хорошие text/html жестко закодированы.

Редактировать: А-а-а! Firefox, Chrome и IE анализируют HTML и выполняют скрипты независимо от типа контента — мне удалось установить Content-type: text/poppycockкогда ресурс имеет расширение .htm или .html. Это означает, что вы должны тестировать не только типы MIME, но и расширения файлов (которые не должны играть никакой роли в HTTP). Не знал этого - вероятно, это было введено для исправления вывода сломанных веб-серверов. Из-за таких вещей я не работаю в сфере ИТ-безопасности :)

Все тесты сделаны на Windows 7.

person Pekka    schedule 21.01.2011
comment
Расширения файлов обычно не имеют значения, если Content-Type не распознан, браузеры могут прибегнуть к анализу MIME: mimesniff.spec. whatwg.org - person Null; 02.05.2019

application/xhtml+xml должен был выполнить Javascript. Это единственное, о чем я могу думать в верхней части моей головы.

person meder omuraliev    schedule 19.01.2011

Это было бы не очень полезно. Javascript не может импортировать другие скрипты, поэтому ваш скрипт будет изолирован от библиотек. Единственный способ связать их вместе — через HTML. Кроме того, возможности ввода/вывода без документа очень ограничены.

person Brian Goldman    schedule 19.01.2011
comment
О, хорошо :) Звучит интересно. Кто они такие? - person Brian Goldman; 20.01.2011

PDF-файлы также могут выполнять JavaScript (application/pdf ).

А также документы XML (application/xml), включая SVG (image/svg+xml), например:

<?xml version="1.0" encoding="utf-8"?>
<document>
<script xmlns="http://www.w3.org/1999/xhtml" src="xml.js"></script>
</document>
person Null    schedule 02.05.2019

Вы пробовали application/javascript?

person scragz    schedule 19.01.2011