【问题标题】:Understanding Cross-Domain issue in Iframes了解 iframe 中的跨域问题
【发布时间】:2012-12-21 06:47:18
【问题描述】:

这个问题可能看起来很傻,但为了清楚起见,我需要理解这一点。

根据我的理解,跨域问题是当包含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 元素。我该如何调试呢??

【问题讨论】:

  • 并不是说您无法打开域外的网页。完成后您将无法访问它。
  • 就我而言,我的网站网址是“top:9700”。此页面包含一个 IFRAME,其中嵌入了 URL“botton:10700”。我无法看到 iframe 中的内容。错误是“访问属性'构造函数'时访问被拒绝”......为什么它不起作用?
  • Same origin 包括端口和协议
  • 也许你应该问一个包含页面 HTML 的问题。
  • 我已根据您的 cmets 提供的相关信息更新了您的问题。请更正并添加所需内容。您最初的问题不完整,并且错过了非常相关的信息,例如端口号

标签: javascript html iframe


【解决方案1】:

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

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

【讨论】:

  • 如果我在显示后(通过代码)调整框架大小,是否视为跨域通信?
  • 不。在最顶层的窗口中调整 DOM 元素的大小。这与任何形式的交流无关。
  • 我发现了问题..问题出在远程站点的脚本中。它试图在框架内对齐。为此,它正在访问框架包含页面的元素...感谢大家帮助我
【解决方案2】:

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

希望这会有所帮助。

【讨论】:

  • 感谢您的回复。我现在明白了。就我而言,我并不想访问任何框架的内容。所以,也许是远程脚本试图访问我的 IFRAME 的包含页面。我该如何调试,正在访问什么并修复它?
猜你喜欢
  • 2012-03-12
  • 2012-12-11
  • 2011-02-18
相关资源
最近更新 更多