Доступ к родительской переменной окна из междоменного 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, но вы не можете сделать это с переменными родительского окна.