Какой тип контента выполняет 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)


arrow_upward
4
arrow_downward

Я не знаю полного списка, и вполне возможно, что такого списка не существует в открытом доступе. Возможно, вам придется выяснить это самостоятельно. (Хотя я не думаю, что что-то говорит против создания тестовой страницы с несколькими фреймами и просьбы к сообществу 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

arrow_upward
2
arrow_downward

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

person meder omuraliev    schedule 19.01.2011

arrow_upward
2
arrow_downward

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

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

arrow_upward
1
arrow_downward

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

arrow_upward
-1
arrow_downward

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

person scragz    schedule 19.01.2011