javascript 启用跨域共享数组缓冲区

qqrboqgw  于 2022-12-28  发布在  Java
关注(0)|答案(1)|浏览(158)

我遇到了一个问题,SAB(SharedArrayBuffer)不能在跨域环境中工作。目标IFrame的源在另一个域中,我在主机文件(Windows操作系统)中添加了别名。我通过postMessage向IFrame发送SAB,但它根本就不发送或接收。如果IFrame的源如下所示:“./frames/frame.html”,SAB就神奇地开始工作了。怎样才能让SAB跨域工作呢?
我正在使用谷歌浏览器,在控制台窗口中,它不显示错误。当使用Firefox时,它提供此错误:无法将包含共享内存对象的消息发送到跨源窗口。
网站使用标题为的webpack托管:

Cross-Origin-Opener-Policy : same-origin
Cross-Origin-Embedder-Policy : require-corp
nuypyhwy

nuypyhwy1#

如果您的跨域环境由同一父域的子域组成(例如one.domain.comtwo.domain.com),甚至sub.domain.comdomain.com,那么这将精确显示您需要在每个域上设置哪些标头:https://stackoverflow.com/a/74923275/7326344
In the iframe's .htaccess (on sub.domain.com) I needed:

Header set Cross-Origin-Embedder-Policy "require-corp"
Header set Cross-Origin-Opener-Policy "same-origin"
Header set Cross-Origin-Resource-Policy "same-site"

In the root document's .htaccess (on domain.com) I needed:

Header set Cross-Origin-Embedder-Policy "require-corp"
Header set Cross-Origin-Opener-Policy "same-origin"

相关问题