2013-09-28 3 views
1

Несмотря на то, что я видел много статей (в том числе в StackOverflow) демонстрации до, как обойти ту же политику происхождения JavaScript в назначая document.domain собственности, ее не работает. Я также читал в спецификациях W3C, что свойство document.domain доступно только для чтения, и не все браузеры принимают его настройку, и я думаю, что это причина, из-за которой я не могу работать так!document.domain же политика происхождения не работает

У меня есть страница (домен d1.y.com.br), и мне нужно вызвать кнопку на встроенной странице iframe (домен d2.x.com.br). Я устанавливаю родительский атрибут document.domain в subdomain 'x.com.br', но я все еще получаю сообщение об ошибке «access denied» в консоли firebug.

Я также прочитал о JSONP, но это не тот случай. Мне действительно нужно взаимодействовать с DOM iframe, а не только получать данные оттуда (используя прокси-сервис).

Действительно существует какой-либо способ обойти одну и ту же политику происхождения для взаимодействия с DOM iframe?

ответ

1

Правильный способ отправки данных между iframe (особенно через домены) использует postMessage(). https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage

Это эффективно «обходит» проблему, если получатель сообщения подтверждает, что у вызывающего есть правильный домен - на основе любых правил, которые он хочет.

+0

Согласен. Проблема в том, что в моем случае встроенная страница не является совместной с моей, то есть встроенная страница не ожидает какого-либо сообщения (отправленного через window.postMessage()) с родительской страницы. Даже если это было, window.postMessage() соответствует HTML5, а моя страница - нет. –

+0

Что мне нужно сделать, это подключить прослушиватель событий к событию кнопки, существующему в DOM iframe, и, как только эта кнопка будет нажата, я отправлю другое событие родительскому DOM. Мне нужно захватить событие в DOM iframe и, чтобы сделать это, мне нужно сначала получить доступ (что заблокировано одной политикой происхождения из-за его кросс-домена) –

+0

Gotcha. В этом случае вы делаете что-то, что в точности соответствует тому, что политика одного и того же происхождения предназначена для предотвращения. IMO, ваш единственный жизнеспособный вариант - это прокси-сервер и изменение страницы, чтобы включить все, что вам нужно. Очевидно, что вам нужно убедиться, что то, что вы делаете, не нарушает условий сайта или не создает других проблем, не связанных с техническим и человеческим. –

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