【Wasm】SharedArrayBuffer(SAB) is not defined
11月18日 / 11月18日
背景
SharedArrayBuffer 是 JavaScript 中一种特殊的对象类型,用于在多个 Web Workers 或主线程之间共享内存。它与普通的 ArrayBuffer 类似,但 可以在多个线程中同时访问和修改。这种功能对于需要高性能并发处理的场景非常有用,比如实时数据处理、游戏开发、音视频处理等。
2017.7月(Chrome 60)引入 SharedArrayBuffer。
2021.7月(Chrome 92)限制 SharedArrayBuffer 只能在 cross-origin isolated 页面使用。(Spectre 漏洞)
解决方案
一、不启用 SharedArrayBuffer
二、 在 HTTP 响应头中添加以下两个安全标头:
- Cross-Origin-Opener-Policy (COOP):
- 将页面与其他来源的窗口隔离开来。
- 推荐值:same-origin。
- Cross-Origin-Embedder-Policy (COEP):
- 确保页面中加载的资源具备同源性或具有适当的跨源授权。
- 推荐值:require-corp。
示例配置:
1Cross-Origin-Opener-Policy: same-origin 2Cross-Origin-Embedder-Policy: require-corp
三、Chrome Origin Trials
申请地址:Trial for SharedArrayBuffers in non-isolated pages on Desktop platforms
参考资料
cd ..