Страница, которую вы сейчас просматриваете, имеет элемент заголовка HTTP Content-type: text/html. HTML отображается нормально, и JavaScript будет выполняться. Если у вас есть Content-Type: text/javascript, то JavaScript не выполняется, он только отображается.
Мой вопрос: существуют ли типы контента, отличные от text/html, которые будут выполнять JavaScript? Мне нужен как можно более полный список для любого распространенного браузера (IE, Firefox, Chrome, Safari).
Ответ 1 · рейтинг 4 · Pekka
Я не знаю полного списка, и вполне возможно, что такого списка не существует в открытом доступе. Возможно, вам придется выяснить это самостоятельно. (Хотя я не думаю, что что-то говорит против создания тестовой страницы с несколькими фреймами и просьбы к сообществу 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.
Ответ 3 · рейтинг 2 · Brian Goldman
Это было бы не очень полезно. Javascript не может импортировать другие скрипты, поэтому ваш скрипт будет изолирован от библиотек. Единственный способ связать их вместе - через HTML. Кроме того, возможности ввода/вывода без документа очень ограничены.
Ответ 4 · рейтинг 1 · Null
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>