如何通过DOM/Javascript访问外部iframe的内容?

4

我有这样一个页面:

<html>
    <head></head>
    <body>
        <iframe src="local.html"></iframe>
        <iframe src="http://www.google.com"></iframe>
    </body>
</html>

我已经使用DOM来访问第一个iframe作为测试(node.documentWindow),但是当我尝试在外部iframe上进行类似操作时,Firebug报告拒绝访问。

我怀疑这是XSS保护的原因,但是有没有“安全”的方法可以导入节点,以便我可以从外部页面中获取元素?是否有一种探索“呈现文档”或其他内容的方式?

谢谢!

1个回答

13

不行。跨域安全限制了这个操作。唯一的解决方法是如果所在页面和iframe位于同一域名下的不同子域名中。在这种情况下,可以使用document.domain

这几乎是必然的。如果不是这样,那将会产生安全隐患。例如,您可以构建一个包含用户家庭银行页面的iframe,并使用 keydown 抓取他们的密码。存在大量被误用的可能性。


明白了。这差不多是我想到的,感谢确认。 - Alex Mcp
1
没问题。我认为你唯一能做的就是编写一个简单的本地PHP代理脚本,使用file_get_contents()获取资源并传递它。你可能会得到一个工作的DOM,但如果它们相对于页面位置,则外部引用(CSS、图像等)将会失效。 - Pekka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接