2010-02-16 61 views
0

我在我的网站上“延迟加载”了第三方广告脚本,方法是覆盖document.write函数并在稍后恢复。此广告脚本创建一个iframe,并尝试写入它。当脚本尝试访问IE8中的iframe时,“访问被拒绝”

我看到一个“访问被拒绝”错误的Internet Explorer 8(而不是在FF,Safari浏览器或Chrome)当脚本试图访问frame.document。框架存在(我可以看到它在IE8开发工具)

任何想法为什么会发生这种情况?难道是因为iframe还没有准备好,或者是因为跨站点安全限制(我不完全理解)?

+1

IE是一个跨域安全的痛苦。我猜iframe不在你的域名? – aepheus 2010-02-16 21:14:31

+0

我没有在我的页面上明确设置的域(这是一个简单的 ...种交易)。 第三方脚本创建iframe,我不相信它也明确地设置域,但我猜测域被设置为远程服务器的URI。 – 2010-02-16 23:39:57

+0

@BilalAslam,我一直在看下面的很好的答案,并想知道这究竟是否是一个域问题呢? – WynandB 2013-01-11 01:41:27

回答

1

在没有看到您的代码的情况下在黑暗中拍摄一张照片,但检查是否在您的页面上明确设置了document.domain。如果您正在设置文档的域,尝试访问动态注入的iFrame可能会在IE中引发访问错误。例如,如果设置了以下内容,请尝试对其进行评论:

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

它取决于您尝试访问frame.document的上下文。

例如,假设你在foo.com上加载你的页面。它反过来在一个名为“myFrame”的框架中加载运行在ad.com上的广告。

如果在foo.com的脚本块中尝试访问myFrame.document,您将会收到投诉,因为这些页面不在同一个域中。您可以从iframe内部引用文档,但不能在外部引用。

这是跨站点安全性的基础知识。如果您可以向我们提供有关导致问题的片段的详细信息,以及各个部分运行在哪个域上,我们可能会提供更多帮助。

相关问题