Доступ к родительской переменной окна из междоменного iframe

Внутри http://mydomain1.com/index.html

<html>
<body>
<script type="text/javascript">
  var a = 1;
</script>
<iframe src="http://domain2.com/test2.html"></iframe>
</body>
</html>

Внутри http://domain2.com/test2.html

<script type="text/javascript">
  alert(parent.a); // forbidden
</script>

Любая работа вокруг?

3 ответа

Решение

Если вам нужно связаться с другим фреймом, вы можете использовать postMessage, Это доступно только в современных браузерах (IE8, FF3, Opera 9, Chrome).

Вы не можете иметь полный доступ к междоменным фреймам из-за соображений безопасности ( Same Origin Policy).

  • Чтение данных между доменами представляет угрозу безопасности, поскольку данные в другом домене могут содержать конфиденциальную информацию (например, токен аутентификации).
  • Возможно разместить данные в другом домене. Так что в этом случае, возможно, вы можете попробовать:

    • domain2.com/test2.html отправляет сообщение на mydomain1.com/index.html с просьбой указать значение "a".
    • mydomain1.com/index.html при получении сообщения можно ответить, отправив значение "a" в domain2.com/test2.html
  • Это означает, что вам нужно настроить прослушиватели событий в обоих доменах для получения сообщений, отправленных из другого домена.

Из iframe вы можете получить доступ к родительским узлам DOM, но вы не можете сделать это с переменными родительского окна.

Другие вопросы по тегам