Java-скрипт в вопросах безопасности IFRAME - PullRequest
3 голосов
/ 18 июня 2011

На сайте http://imaginaryman -test.blogspot.com / пишущая машинка находится внутри IFAME. Все работает правильно во всех браузерах, когда вы заходите на сайт напрямую http://castedspell.com/mark/, но при просмотре версии, встроенной в IFRAME, она не работает в IE и выдает ошибки в Chrome.

Небезопасная попытка JavaScript получить доступ к фрейму с URL http://imaginaryman -test.blogspot.com / из фрейма с URL http://castedspell.com/mark/. Домены, протоколы и порты должны совпадать.

Это исходный код для встроенного IFRAME https://github.com/totheleftpanda/typeWrite/tree/master/mark

Я понимаю, что это проблема безопасности, но я не знаю, как ее исправить, и не могу найти какой-либо материал, который помог бы мне решить эту проблему.

Ответы [ 5 ]

3 голосов
/ 12 июля 2011

Самый простой способ - установить прокси PHP (или любой серверный язык), который просто получает содержимое страницы из другого домена и выводит его.Единственным реальным недостатком является то, что куки клиента для удаленного домена не отправляются.

1 голос
/ 14 июля 2011

Взгляните на http://benalman.com/projects/jquery-postmessage-plugin/. Это плагин jquery, который отправляет сообщение между двумя кадрами.Два кадра не обязательно должны находиться в одном домене.Но вам нужно получить доступ к обеим страницам, чтобы иметь возможность их изменять.Я также написал пост здесь, который отвечает на общение между iframes. Как перехватить клики из iframe на другом домене?

1 голос
/ 08 июля 2011

Ваш единственный шанс - что-то вроде easyXDM. (или сделайте это вручную, используя хеш, но предпочли бы easyXDM)

См. Ответ SO: Междоменное сообщение об изменении хеша

например. если вы хотите вызвать метод:
http://easyxdm.net/wp/2010/03/17/remote-procedure-calls-rpc/

EDIT:

Если я попробую вашу демонстрацию в Firefox, у меня вообще не появится сообщение об ошибке «Небезопасная попытка JavaScript». Но в Chrome он бросается много раз.
У вас в коде так много другого кода, что я даже не уверен, что ваш код вызывает проблему. Вы должны сделать очень ограниченный / базовый тест, чтобы проверить, работает ли ваше flash-общение, без всех других javascript-скриптов.

0 голосов
/ 15 июля 2011

Это может быть проще, чем приведенные выше ответы.Эта функция выглядит следующим образом:

function playSound(){
    swf.playSound();
}

Записывается на временной шкале DOM, прежде чем swf будет фактически назначен объекту swfObject в функции под ним.

Я бы порекомендовал переместить эту функцию дальше изатем повторите тест.

0 голосов
/ 18 июня 2011

У меня были подобные проблемы с этим раньше. В основном, если у вас есть iframe, содержащий страницу из домена, который отличается от домена главной страницы, javascript не сможет пересечь границы между ними. Javascript внутри iframe сможет общаться внутри iframe, javascript на главной странице сможет общаться на главной странице, но они не смогут общаться друг с другом.

Это проблема безопасности, направленная на прекращение межсайтовых скриптовых атак. Есть несколько хаков, которые вы можете использовать для решения этой проблемы, но все они (или, по крайней мере, те, о которых я знаю) довольно волосатые.

Вот несколько вопросов, на которые вы должны ответить, прежде чем пытаться идти дальше:

1) Что именно вы пытаетесь сделать между страницами, используя javascript?
2) У вас есть доступ к источнику обеих страниц?

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