【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 响应头中添加以下两个安全标头:

  1. Cross-Origin-Opener-Policy (COOP):
    • 将页面与其他来源的窗口隔离开来。
    • 推荐值:same-origin。
  2. 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 ..
©2024All rights reserved by z0ffyPowered by Gossip.