在尝试运行SharedArrayBuffer时,我一直得到一个‘ffmpeg.wasm没有定义’的错误。看来这是在组件的一侧。无论如何,我知道这是一个问题,可以克服跨源隔离。但是,我试图在本地主机上运行它,据我所知,跨源隔离无助于此。我试着遵循这个指南底部的说明,但是没有结果。我也尝试过一种改变Chrome//标志的方法,但这也是行不通的。我只需要能在浏览器里运行,但有一点麻烦。有什么想法吗?
发布于 2021-12-30 19:55:17
本地主机服务器应该提供所需的响应头:
$ curl -I http://localhost/
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp此服务器脚本为SharedArrayBuffer可用性提供了基线测试:
// $ node server.mjs
import { createServer } from 'http'
createServer((request, response) => {
response.writeHead(200, {
'Content-Type': 'text/html; charset=utf8',
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp',
})
response.write(`<script>
document.write(window.SharedArrayBuffer
? '✅ SAB available'
: '❌ SAB unavailable'
)
</script>`)
response.end()
}).listen(80)发布于 2021-12-31 14:16:35
通过向页面提供以下响应头,可以使页面跨源隔离:
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin如果使用NGINX作为代理,只需将以下代码添加到要添加标题的location块中:
location some-location {
add_header "Cross-Origin-Opener-Policy" "same-origin";
add_header "Cross-Origin-Embedder-Policy" "require-corp";
}或者更简单一些,您可以使用此页面中的令牌来启用SharedArrayBuffer,而无需跨源隔离页面。但是,它有一个到期日期。
在您的网页中,只需在标签中添加以下标签即可。
<head>
<meta http-equiv="origin-trial" content="{token}">
</head>如果您使用NGINX,请添加标题。
add_header Origin-Trial {token};https://stackoverflow.com/questions/70535752
复制相似问题