是否可以在普通页面中嵌入跨域隔离的 iframe?

ZYi*_*nMD 6 webassembly sharedarraybuffer cross-origin-embedder-policy cross-origin-opener-policy cross-origin-resource-policy

(对于某些人来说,这个问题可能等于“如果我不能sharedArrayBuffer在我的主站点中使用,我可以打开一个 iframe 并sharedArrayBuffer在 iframe 内部使用吗?”)

所以我想在我的站点中使用一些带有sharedArrayBuffer的wasm,但是使站点跨域隔离是不切实际的,所以我创建了另一个站点https://my-wasm-function.app,它跨域隔离的。我希望将它用作 iframe,并通过 与我的主站点进行通信postMessage

然而,我发现一旦它作为 iframe 嵌入,它就失去了隔离状态。

2021 年 3 月曾有人提出过类似的问题,当时接受的答案是“否”。然而,最近的一篇谷歌博客文章似乎暗示不然,所以我想再问一遍。

该博文有一些关于如何隔离 iframe 的模糊说明,其中之一是添加标题Cross-Origin-Resource-Policy: cross-origin(我认为在COOP和 的顶部COEP),我尝试过,但没有成功。还有一个就是这样打开iframe:<iframe allow="cross-origin-isolated">,我也尝试了,也没用。

ZYi*_*nMD 4

答案是不。得到了该博文作者的确认。

目前还不是很清楚<iframe allow="cross-origin-isolated">实现了什么,如果父级被隔离并且 iframe 的标头不在您的控制范围内,也许它可以隔离 iframe 而不设置标头,但如果父级不是,它肯定不会保持 iframe 隔离。博文作者表示他将添加一些说明。