如何解决 iframe 跨域问题 [重复]

Posted

技术标签:

【中文标题】如何解决 iframe 跨域问题 [重复]【英文标题】:how to resolve iframe cross domain issue [duplicate] 【发布时间】:2017-04-13 11:15:25 【问题描述】:

我正在制作必须显示另一个域的网页的网页。

例如,在我的web html中,有两个<div>标签。

喜欢:

<html>
<head></head>
<body>
   <div>
      <p> hello world </p>
   </div>
   <div>
      <!-- other domain's web page comes here -->
   </div> 
</body>
</html>

要解决我的问题,我应该使用&lt;iframe&gt;&lt;embed&gt;&lt;object&gt; 标签,但这会导致跨域问题。所以,我不能用它来显示其他域的网页。他们不允许我使用它。

所以,例如:

<iframe src="http://***.com"></iframe>

它不起作用。我的网页无法显示 ***.com。因为,*** 否认了这一点。

我已经搜索了很多关于这些问题的东西。但它们只是 ajaxJSONP。它不是 iframe

有解决我的问题的方法吗?还是无法实现?

【问题讨论】:

您是否考虑过使用页面截图而不是 iframe? 另外,iframe 应该用火杀死。在大多数情况下,它不是最理想的。 @xShirase 我 120% 同意你的观点 :)) 使用服务器端库,手动完成 @xShirase iframe 不是问题。 iframe 是替罪羊。这个问题真的很复杂。 HTTP 以某种特定方式不安全,从而阻止了 Web 的特定用例,而 CORS 以一种恰好使 iframe 非常复杂的方式修复了该问题。 iframe 是一种有价值的用户界面工具。 【参考方案1】:

您需要控制要嵌入的域才能删除/修改其 CORS 政策。 如果域已明确阻止跨域请求,则您无能为力。

这用于避免任何人劫持您想要的任何网站(您可以在 iframe 中使用全屏 Google,并在 Bettergoogle.com 上投放您的广告,诸如此类)。

This page will give you more insights on Cross-Origin

【讨论】:

好的,我们可以控制要嵌入的域。如何指定 CORS 策略以使其正常工作? 值得一提:除非特别限制,默认情况下 iframe 嵌入 3rd 方网站有效。 "CORS 在尝试以编程方式访问跨域 iframe 的内容时不适用。如果您想从不同域的 iframe 访问内容,则需要使用网络消息传递API" -- ***.com/a/22413275/2603297【参考方案2】:

如果您获得 iframe 中域所有者的许可,您可以要求他们将您的域添加到他们的跨域策略中,以便您执行此操作。

如果您无权在您的网站上显示他们的内容,我很高兴地说,现代浏览器不支持这种不道德的行为,并且您无法做您想做的事情。

【讨论】:

以上是关于如何解决 iframe 跨域问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何解决iframe session 失效问题

调整跨域 iframe 高度的大小 [重复]

获取跨域iframe的DOM内容[重复]

获取跨域iframe的DOM内容[重复]

获取跨域iframe的DOM内容[重复]

js跨域问题