【问题标题】:Cross-domain and iFrames跨域和 iFrame
【发布时间】:2012-01-15 07:06:27
【问题描述】:

我正在尝试一些我真的无法弄清楚的事情。我有一个 iFrame 从另一个我无权访问的域加载一些内容。我“简单地”尝试做的是获取 iFrame 的内容以在 PHP/Javascript 中使用它。这就是我面临“跨域”问题的地方。我无法访问 iFrame 的内容。好郁闷。

因此,我阅读并阅读了更多内容,并了解了 HTML5 提供的“postMessage()”函数。我看到了这个系统的解决方案,但我仍然想不出一点。基本上,它与发送者和侦听器一起工作。所以我需要在 iframe 中有一个监听器,当它被触发时,会将内容发送回主窗口。

但是如何在不删除内容的情况下在已加载的 iFrame 中添加一些代码?

我真的不需要使用 postMessage(),只要我能得到这个该死的内容,我就可以成为任何人!

任何建议表示赞赏!

谢谢!

【问题讨论】:

  • 为什么不直接跳过 iFrame 并使用 PHP 的 file_get_contents() 函数?
  • 因为我需要使用客户端的IP。我不能没有...这是我所有问题的开始:)

标签: javascript iframe cross-domain postmessage


【解决方案1】:

这仍然是不可能的,而且有充分的理由!

要使用客户端的 cookie、IP 和凭据从另一个域读取数据,需要正在查看的页面以某种方式公开信息 - 这是侦听器(外部页面)和发送器(IFrame)协同工作的双向对话。

这是必需的原因:想象一下制作一个占据页面 100% 的 IFrame。您可以在 IFrame 中显示一个常见网站的登录表单,然后拦截击键/输入框的更改并记录它们。用户只有在检查 URL 时才会知道其中的区别。

如果您可以控制用户的浏览器,您可以使用 GreaseMonkey 的跨域 AJAX 来获取 IFrame 的内容(假设 Firefox/Chrome)

【讨论】:

    【解决方案2】:

    不会有这样的帮助:

    函数 getContentFromIframe(iFrameName) { var myIFrame = document.getElementById(iFrameName); var 内容 = myIFrame.contentWindow.document.body.innerHTML; //对内容做任何你需要的事情 }

    【讨论】:

    • 这在我的情况下不起作用,因为 iFrame 的内容是:1)XML 而不是 HTML 2)来自另一个域,所以我认为我不能以这种方式访问​​它.
    • iFrame 正在从不同的域加载内容。同源策略禁止访问来自其他域的框架内容,即使只是为了阅读。
    • 是的,跳过了,请看一下:stackoverflow.com/questions/6474484/…
    • @Aaron 有没有办法“绕过”使用 HTML5 ?应该有可能……不?
    • @Sudhir 好吧,您建议的帖子指出您需要访问双方,这在我的情况下是不可能的。
    猜你喜欢
    • 2011-08-28
    • 2014-04-09
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多