iframe中的iframe无法加载

时间:2013-01-23 11:30:07

标签: html iframe web cross-domain

我遇到了跨域iframe黑客的麻烦。

我的网页上有一个iframe“if1”,其中包含另一个iframe“if2”。

“顶部”页面在域A上运行。 if1的页面在域B上运行。 并且if2的页面正在域A上运行。

我想要做的是:在if1中运行身份验证,将结果标记作为哈希传递给if2的url并加载if2。当加载if1的页面时,令牌已经过身份验证,我只需添加if2和已生成的url,如下所示:

<iframe name="if2" id="if2" src="http://example.com/testing#token=8927348962028" onload="javascript:alert('loaded');" onerror="javascript:alert('unable to load iframe');" ></iframe>

现在,if2根本没有加载,它只是保持白色。我总是收到“无法加载iframe”的警报。 但这只发生在if1嵌入“顶部”页面时。当我在浏览器的另一个标签中加载if1的内容时,if2加载完美。

是否有某些政策阻止加载二级iframe?或者我错过了什么?

1 个答案:

答案 0 :(得分:5)

我找到了解决问题的方法。

如果您使用加载页面B的iframe加载页面A,并且再次加载加载页面A的iframe,则会有一个循环,因为页面A加载了页面B,依此类推。

在我的情况下,浏览器停止加载第二个iframe(再次加载页面A的iframe)。 这似乎是防止这种循环的正常行为。

我只是在if2的url中添加了一个?innerframe = true参数,并在设置该参数时阻止了if1加载。这样循环就会消失,问题也就消失了。

@Rune:感谢您的帮助,小提琴的链接非常有助于解决这个问题。