1

我有一个页面,其中包含来自两个不同域的 iframe,即如下所示

<!-- domain 1 frames -->
<iframe src="domain1/page1.html">
<iframe src="domain1/page2.html">

<!-- domain 2 frames -->
<iframe src="domain2/page1.html">

现在假设我在 domain1/page1.html 中有以下 javascript 代码

var frames = window.parent.frames;

这将为我提供来自父窗口的所有 iframe(来自域 1 和域 2 的 iframe)。但是,我只想从域 1 中获取 iframe。当我尝试使用以下代码仅从域 1 中过滤 iframe 时

var isSameOrigingIframe = window.location.host == window.parent.frames[i].location.host;

当来自域 1 的 iframe 尝试访问 iframe 域 2 时,我收到安全异常(跨域策略违规)。

我当前的解决方案依赖于 try-catch 块,如下所示

var isSameOrigingIframe = false;
try{
   isSameOrigingIframe = window.location.host == window.parent.frames[i].location.host;
}catch(e){
   isSameOrigingIframe = false;
}

上述解决方案有效,但是否有任何安全的方法可以仅从同一域获取 iframe?或者有更好的方法来过滤来自同一域的 iframe。

4

0 回答 0