Lightning 从另一个网站嵌入 iframe

Lightning embed iframe from another website

我正在尝试构建一个简单的组件来在 Lightning 组件内显示网页。这是我的起始代码。

<aura:component implements="force:appHostable">
    <iframe width="100%" height="350px" style="border: 1px solid" src="https://trailhead.salesforce.com/en/content/learn/trails/wave_analytics_apps" />
</aura:component>

然后我打算使用 iframe 将其嵌入到 Lightning 组件中。有什么办法让它发挥作用吗?我已经通过禁用它来检查 ClickJack。我在远程站点设置、CORS 和 CSP 可信站点中创建了记录。我仍然收到此错误。

不是你,是他们。提示在“{target} 拒绝连接”中。我不知道你对 Chrome 错误控制台做了什么,但错误应该在那里。

Refused to frame 'https://trailhead.salesforce.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'".

https://en.wikipedia.org/wiki/Content_Security_Policy

该 trailhead 页面不允许嵌入到其他任何地方,即使是来自同一子域的页面也是如此。如果您使用 src="https://example.com",您的组件将正常工作。一般来说,您需要与目标网站的所有者交谈,将您的 SF 列入白名单(内部 mydomain and/or 社区,取决于您究竟想用它做什么)

我的朋友。我最近有同样的问题。所以,我解决了暂时禁用实现新闻功能的chrome的标志,标志将默认只有84版本的chrome,但你可以快速解决这个问题,这样做:

1 - 转到 chrome://flags/ 进入 chrome 的 url。

2 - 禁用以下标志:

   - SameSite by default cookies = disabled
   - Enable removing SameSite=None cookies = disabled
   - Cookies without SameSite must be secure = disabled

3 - 单击重新启动。

对于您在 saleforce 中明确解决的问题,您可以询问自己(页面嵌入),在您的 cookie 中实现与 cookie 中相同的值:

 - On the cookie set values to:
    - secure = Yes
    - SameSite = NONE.

对我来说解决的很好。 但是,如果您需要使用组件 Aura 通过 iframe 获取事件,请在此处告诉我,我会提供 post 更多信息。