Cookie 同意弹出窗口不会在 IFrame 中消失

Posted

技术标签:

【中文标题】Cookie 同意弹出窗口不会在 IFrame 中消失【英文标题】:Cookie consent popup does not disappear in IFrame 【发布时间】:2021-03-03 19:11:06 【问题描述】:

在我们的应用程序中,我们有一个 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/"   title="IFrame Example" ></iframe>
</body>
</html>

弹窗截图(页面底部为黑色)

更新:-

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于Cookie 同意弹出窗口不会在 IFrame 中消失的主要内容,如果未能解决你的问题,请参考以下文章

iframe中的弹出窗口如何显示在最外层?

jquery easyui 弹出 dialog窗口问题

如果在 iframe 中,引导模式弹出窗口会忽略滚动位置

没有边框的 iframe 并在弹出窗口中滚动

是否可以将 cookie 设置为 Page Speed Insights 测试?

iFrame 未在 Flex 弹出窗口中加载