跨源 Iframe 分区 IndexedDB

Cross Origin Iframes Parititioning IndexedDB

我有一个使用 indexeddb 进行本地存储的跨源 iframe。我想要的是让我的 indexeddb 将原点设置为 iframe 的原点。当我访问 iframe 的域时,我希望能够访问存储在该域的 indexeddb 中的数据。

这在 Chrome 中工作正常,但是在 Firefox 和 Safari 中,我发现了一个问题。 iframe 代码根据它是否加载到 iframe 中获得两个不同的索引数据库。我弄清楚了 Firefox 在做什么,我怀疑 Safari 也在做类似的事情。 Firefox 实际上是根据 iframe 域和嵌入父域的联合对 indexeddb 进行分区。 (即 Firefox 不按 iframe 的来源进行分段,而是按 iframe 的来源和父级来源的组合。)

我一直在研究 iframe 上的各种沙箱参数,但我还没有找到解决这个问题的方法,而且关于这个的信息也不多。无论如何强制 Firefox 和 Safari 在这里只使用 iframe 的来源?

这是由于 state partitioning

您可以使用 Document.requestStorageAccess() api

请求未分区状态访问