Ошибки разрешений JavaScript, связанные с IFrame - PullRequest
0 голосов
/ 29 апреля 2009

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

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

document.domain = 'domain.com'; // где domain.com мой домен

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

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

127.0.0.1 domain.com

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

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

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

Ответы [ 2 ]

1 голос
/ 29 апреля 2009

Несмотря на то, что свойства «document.domain» выглядят одинаково, из документация MSDN звучит так, как будто вам все еще нужно, чтобы их простота была одинаковой:

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

0 голосов
/ 29 апреля 2009

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

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

С уважением.

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