`Uncaught ReferenceError: SharedArrayBuffer is not defined` since Chrome 92

`Uncaught ReferenceError: SharedArrayBuffer is not defined` since Chrome 92

使用SharedArrayBuffer导致错误:Uncaught ReferenceError: SharedArrayBuffer is not defined on Chrome 92.这是为什么?我该如何解决?

Chrome 桌面上的

SharedArrayBuffer 在 Chrome 91 之前一直免费提供,但在 92 之后,它需要一种称为“cross-origin 隔离”的特殊状态Firefox 和 Android Chrome。要启用状态,必须发送两个安全 headers Cross-Origin-Embedder-Policy: require-corpCross-Origin-Opener-Policy: same-origin.

Spectre caused all browsers to disable SharedArrayBuffer but Chrome desktop could enable it again using the proprietary Site Isolation 的发现。 Chrome 92 是它转向标准化方法的版本。

如上所述,应用两个 headers 并启用“cross-origin 隔离”是可行的方法,但设置它可能需要一些时间。作为 escape-hatch,您可以请求 an origin trial 将您的网站列入许可名单,以便至少在 Chrome 96 之前继续使用 SharedArrayBuffer 而无需 cross-origin 隔离。

要了解有关 cross-origin 隔离的更多信息,请阅读: