"Доступ запрещен", когда script пытается получить доступ к iframe в IE8

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

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

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

Ответ 1

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

//document.domain = "mydomain.com";

Ответ 2

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

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

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

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