Какой тип контента выполняет JavaScript в браузере? - PullRequest
5 голосов
/ 20 января 2011

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

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

Ответы [ 5 ]

3 голосов
/ 21 января 2011

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

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

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

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

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

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

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

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

2 голосов
/ 20 января 2011

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

2 голосов
/ 20 января 2011

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

1 голос
/ 02 мая 2019

Файлы 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>
0 голосов
/ 20 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...