2013-01-07 63 views
8

这个问题看起来很愚蠢,但为了清晰起见,我需要理解这一点。了解iframe中的跨域问题

根据我的理解,跨域问题是当包含IFRAME的网页的域与在IFRAME中打开的网页的域不同时。

按照这个逻辑,IFRAME中不应该打开任何东西。

当我在我的网页“top:9700”的IFRAME中嵌入了一个网页“bottom:10700”时,它给出错误。我无法看到IFRAME中的内容。错误是Access denied in accessing property 'constructor'

我得到的错误,而访问构造器(_1.contructor)

isc.A.Function=function isc_isA_Function(_1){ 
    if(_1==null) return false; 
    if(isc.Browser.isIE&&typeof _1==this.$a7) return true; 
    var _2=_1.constructor; 
    if(_2&&_2.$k!=null){ 
    if(_2.$k!=1)return false; 
    if(_2===Function)return true 
    } 

当底部的主页中所含的顶部iframe中打开此脚本运行。

有什么办法,我可以做这个工作。我的意思是我可以设置两个域是相同的。我没有访问远程站点的脚本。

重新调整帧后重新调整一次跨域方案。如果没有,那么肯定远程站点正试图访问IFRAME元素..我可以如何调试?

+5

并不是说您无法打开域外的网页。你做完就无法访问它。 – JJJ

+0

就我而言,我的网站网址是“http:// top:9700”。此页面包含嵌入了网址“http:// botton:10700”的IFRAME。我无法看到iframe中的内容。错误是“访问属性中的访问被拒绝'构造函数'”...它怎么没有工作? – user1522820

+0

[同源](http://en.wikipedia.org/wiki/Same_origin_policy)包括端口和协议 – mplungjan

回答

8

跨域问题与iframe之间的通信有关。您始终可以嵌入任何iframe,但如果域名不同,iframe就无法互相交互,例如执行JS,修改DOM等。

HTML5提供了一个sandbox property,它重新启用了跨域iframe交互的特定功能。小心,它可能是危险的。

+0

如果我在显示它之后调整帧大小(通过代码),是否将其视为跨域通信? – user1522820

+0

没有。您在最上面的窗口中调整DOM元素的大小。这与任何一种沟通无关。 – oleq

+1

我觉得这个问题。问题出在远程站点的脚本中。它试图在框架内对齐自己。要做到这一点,它正在访问框架的页面元素...感谢大家帮助我 – user1522820

3

页面xyz.com加载到abc.com上托管的iframe是正常行为。但是,您无法通过父母abc.com的代码更改任何内容或访问其内容。

希望这有助于。

+0

感谢您的回复。我现在明白了。就我而言,我并不想访问任何框架的内容。所以,也许它是远程脚本试图访问我的IFRAME的包含页面。我如何调试,访问什么并修复它? – user1522820