1

在我们的应用程序中,我们有一个 IFrame 用于显示任何站点(通过 admin/crm 控制台设置)。我们在 IFrame 中显示带有 cookie 同意弹出窗口的站点时遇到了一个奇怪的问题。在 IFrame 中,即使用户接受 Cookie 同意,在后续请求中也会再次出现弹出窗口。看起来 IFrame 无法发送或设置 cookie。

当我们在浏览器选项卡中打开网站时,一旦我们接受 cookie,弹出窗口就不会再次出现。可能会发生什么,一旦用户在 IFrame 中接受这些 cookie 同意弹出窗口,我们如何才能摆脱这些弹出窗口?请注意,我们无法控制 IFrame 中显示的网站。

我尝试了带有 IFrame 的简单 HTML 页面,问题在那里复制,代码如下

<html>
<head>
<title>IFrame issue</title>
</head>
<body>
<iframe src="https://www.nutrition.org.uk/" height="100%" width="100%" title="IFrame Example" ></iframe>
</body>
</html>

弹出窗口的屏幕截图(页面底部为黑色)

在此处输入图像描述

更新:-

我检查了为本网站设置的 cookie,当用户单击“确定”按钮时,在普通浏览器选项卡中。设置了一个新的 cookie,例如在这种情况下为“cookieAcceptanceCookie”=“接受”。检查下图,

在此处输入图像描述

同样,我检查了 IFrame,也设置了相同的 cookie。检查下图。

在此处输入图像描述

所以看起来问题仍然存在于在后续请求中发送这个 cookie。我猜普通浏览器选项卡可以发送这个 cookie,因为 IFrame 无法发送它,因此这个问题出现在 IFrame 中。

4

1 回答 1

1

这实际上是浏览器的一个常见隐私功能,即不允许 iframe 设置 Cookie。这是针对 CSRF 的保护和反跟踪功能,因为网站长期以来一直通过来自 iframe 的 cookie 跟踪用户。

您可能需要Allow third-party cookies在 chrome://settings/content/cookies 中指示您的用户,可能会创建一个像这样的页面。

如果您控制了 iframe 中的站点,则可以使用SameSite=None ..... 但不幸的是,这不适用,因为您无法控制它们。

于 2020-11-23T13:59:42.800 回答