如何在使用“window.postMessage”发送的浏览器中保留跨域数据 - 什么算作存储访问 API 的“用户手势”?

How to persist cross-domain data in the browser sent using `window.postMessage` - what counts as a "user gesture" for the Storage Access API?

提问人:Ders 提问时间:10/2/2023 最后编辑:Ders 更新时间:10/2/2023 访问量:38

问:

我有 2 个具有不同域的站点,a.com 和 b.com。我正在使用 window.postMessage 将一段数据从 a.com 发送到 b.com,并将 b.com 加载到 a.com 上的 iframe 中。之后,我尝试将接收到的数据制作成 b.com 上的 cookie - 但它似乎受到状态分区的限制。我有 [Firefox],

Partitioned cookie or storage access was provided to “b.com” because it is loaded in the third-party context and dynamic state partitioning is enabled.

因此,我正在尝试使用存储访问 API 来保存 cookie。我明白了

requestStorageAccess()请求 [...] 需要在某种基于用户手势的事件处理程序中运行

这样做的问题是 a.com 上的 b.com iframe 没有显示 ()。有没有办法通过确认之类的东西来提示用户的响应,并将其用作“基于用户手势的事件处理程序”,而不是他们直接与不可见的 b.com iframe 交互?display: none


我在 Stack Exchange 上看到了多个答案,这表明这是完全有效的。首先,存在一个巨大的 iframe 陷阱(经典 iframe)。现在有状态分区,它本身除了令人讨厌之外,还需要用户交互(破坏交易)。这越来越像是一个可怕的黑客攻击,而不是它所制定的强大解决方案。window.postMessage

在这一点上,这是出于科学目的(因为另一种跨域通信方法 - 带有参数的重定向 - 也应该适用于我的用例)。

javascript postmessage 第三方 cookie storage-access-api

评论


答: 暂无答案