【问题标题】:Bypass Cross-Domain-Policy to access iframe's HTML with server-side solution使用服务器端解决方案绕过跨域策略访问 iframe 的 HTML
【发布时间】:2016-05-29 11:37:27
【问题描述】:

目前我们正在尝试访问(使用 javascript)动态生成的 html 元素的 HTML(例如,获取图像的 url)。如果仅使用 javascript 生成 html 元素 - 它们没有问题。只需通过访问 DOM 元素使用 javascript 提取图像 url。但是现在我们遇到了 iframe 的问题。

目前的情况是这样的:

  • 我们包含外部脚本文件(www.test.com/script.js) 以在我们的网站上创建图库
  • script.js 在我们的网站中生成一个新的 iframe (document.write('iframe code here'));参考 www.test.com/iframe.html)
  • iframe.html 再次包含 javascript 代码以通过创建多个 dom 元素(div、imgs、a、p、...)来生成图库

现在我们需要读取这些图像的 src 属性。用浏览器的调试工具,是没有问题的。没有iframe,也没有问题。但是对于 iframe,由于浏览器的跨域策略,我们无法使用 javascript 访问 iframe.html 的 html。

一种可能的解决方案是尝试用javascript获取iframe标签的src,调用服务端脚本获取src-url的html内容,并通过eval( )-再次在客户端上运行。

我希望你有其他更好的方法来解决这个问题。

【问题讨论】:

  • 唯一不涉及魔法(不适用于所有浏览器并且每隔一周中断的东西)的唯一方法是在服务器上使用无头浏览器。例如,尝试 phantomjs。这就像做一个 cURL 请求,但也像浏览器一样执行所有 JS,这样你就得到了“最终”的 HTML。
  • 您是否有权访问您尝试从中获取内容的服务器?
  • Sergiu Paraschiv,我认为这是最好的方法,也是我正在寻找的解决方案!

标签: javascript php html


【解决方案1】:

您的问题并不清楚,但如果您的应用正在提供 iframe,您可以use postMessage 以便在 iframe 与其父窗口之间进行通信。

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 2015-09-05
    • 1970-01-01
    • 2015-12-11
    • 2011-03-06
    • 2016-10-10
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多