настройка document.domain, когда SOP в любом случае не нарушается

#javascript #comet #same-origin-policy

#javascript #comet #политика того же источника

Вопрос:

Я пытаюсь выяснить, служит ли настройка цели при загрузке содержимого из iframes, document.domain='example.com' если SOP в любом случае не будет нарушен. В моем сценарии у меня есть html-страница на www.example.com который загружает iframe на www.example.com/iframe (весь порт 80) — итак, насколько я понимаю, настройка свойства document.domain здесь не нужна.

В FF3 код javascript, передаваемый из iframe, однако, не выполняется, если я не задам document.domain свойство явно как на родительской странице, так и на iframe. В FF4 он не выполняется ни при одной из настроек. Я также пробовал использовать префикс www в имени хоста — никакой разницы. Firebug показывает, что фрагментированная часть, содержащая полное содержимое <script> тега, все же была загружена.

Означает ли это, что настройка document.domain все еще имеет цель, когда нет задействованных поддоменов или xss?

Ответ №1:

Настройка document.domain не должна иметь эффекта в вашем случае, если не происходит что-то еще.

Я предлагаю вам не трогать document.domain и попытаться найти реальную причину вашей проблемы. Вмешательство в document.domain приведет только к проблемам при выполнении AJAX или загрузке файлов через iframes и тому подобное, поскольку они не обязательно будут использовать новый суффикс домена.

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

Комментарии:

1. Спасибо за ваш ответ. Может ли простое «получение» document.domain иметь какой-либо эффект? Также «если не происходит что-то еще» — что может быть чем-то еще?