«Доступ запрещен», когда скрипт пытается получить доступ к iframe в IE8 - PullRequest
0 голосов
/ 17 февраля 2010

Я "лениво загружаю" сторонний рекламный скрипт на своем веб-сайте, перезаписав функцию document.write и восстановив его позднее. Этот рекламный скрипт создает iframe и пытается написать в него.

Я вижу ошибку "Доступ запрещен" в Internet Explorer 8 (но не в FF, Safari или Chrome), когда скрипт пытается получить доступ к frame.document. Рамка существует (я вижу это в IE8 Developer Tools)

Есть идеи, почему это происходит? Может ли это быть из-за того, что iframe не готов или из-за ограничений безопасности между сайтами (что я не до конца понимаю)?

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Просто выстрел в темноте, не видя ваш код, но проверьте, не установлен ли у вас document.domain явно на вашей странице. Если вы устанавливаете домен документа, попытка доступа к динамически внедренному iFrame может привести к ошибкам доступа в IE. Например, если установлено следующее, попробуйте закомментировать его только для проверки:

//document.domain = "mydomain.com";
0 голосов
/ 17 февраля 2010

Это зависит от контекста, из которого вы пытаетесь получить доступ к frame.document.

Например, допустим, вы загрузили свою страницу на foo.com. Он, в свою очередь, загружает рекламу, размещаемую на ad.com, в кадре под названием «myFrame».

Если в блоке скриптов на foo.com вы попытаетесь получить доступ к myFrame.document, вы получите жалобу, поскольку страницы не находятся в одном домене. Вы можете ссылаться на документ изнутри iframe, но не снаружи.

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

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