2009-04-29 4 views
0

У меня есть .jsp, который содержит IFrame со страницей с встроенным JavaScript. Этот JavaScript обращается к некоторым элементам DOM на родительской странице (той, которая содержит IFrame).Ошибки разрешений JavaScript, возникающие из IFrame

Введенная страница будет находиться на отдельном поддомене с родительской страницы, и я понимаю, что есть некоторые последствия для безопасности. Мое впечатление состоит в том, что document.domain любых страниц, встроенных в IFrames, должен соответствовать document.domain родительских страниц для доступа к перекрестному IFrame. Вложенная страница в настоящее время содержит следующий код, чтобы «расширить» сферу его безопасности:

document.domain = 'domain.com'; // где domain.com является моим доменом

Затем он переходит к элементам DOM в родительском документе.

Я в настоящее время тестирования это и модифицировали файл хостов на машине Windows, обслуживающей родительской страницы с помощью следующей записи:

127.0.0.1 domain.com

Цель состоит в том, чтобы обмануть JavaScript на родительскую страницу, полагая, что документ на встроенной странице обслуживается из того же домена.

Если я затем перейду на страницу на том же компьютере. Несмотря на то, что document.domain отображается как «domain.com» как на родительском, так и на встроенном страницах, как это наблюдается через Firebug, я получаю ошибки «Разрешения на отказ» при попытке получить или установить свойства DOM из JavaScript, запущенного на встроенной странице.

Я что-то упустил? Заранее благодарим за любые предложения или комментарии!

ответ

1

Даже если «document.domain» свойства выглядят одинаково, от the MSDN documentation это звучит, как вы все еще должны в явной форме установить их, чтобы быть таким же:

Все страницы на разных хостах должны иметь свойство домена явно установлено на то же значение для связи успешно друг с другом. Например, для значение домена свойство страницы на хосте microsoft.com является «microsoft.com» по по умолчанию. Может показаться логичным, что если вы установили свойство домена на странице на другом узле с именем msdn.microsoft.com на «microsoft.com», , чтобы обе страницы могли связывать друг с другом. Однако это не случай, , если вы явно не задали свойство домена страницы microsoft.com на "microsoft.com."

+0

Я считаю, что вы правы. Я попытался явно установить свойство document.domain в код JavaScript на то же значение, которое у меня есть в файле моих хостов. Как только я это сделал, ошибки были решены. Это очень странно.Я заметил значение свойства document.domain до того, как явным образом установил его и после, и значение не изменилось. Но почему-то это заставило все работать. Возможно, есть что-то еще, что я не знаю, что это разрешено, установив это свойство в коде. – AndreiM

+0

Ссылка, которую вы опубликовали, очень полезна! Большое спасибо! – AndreiM

0

Вы можете поместить прокси для перенаправления запросов <iframe src="http://domain.com/fake/"> в нужное место.

Это просто идея ...

С уважением.

Смежные вопросы