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

时间:2021-06-10 03:18:26

标签: security spectre sharedarraybuffer

在 Chrome 92 上使用 SharedArrayBuffer 会导致错误:Uncaught ReferenceError: SharedArrayBuffer is not defined。这是为什么?怎么解决?

1 个答案:

答案 0 :(得分:1)

Chrome 桌面上的

SharedArrayBuffer 在 Chrome 91 之前一直是免费可用的,但在 Chrome 92 之后,它需要一种称为“跨域隔离”的特殊状态,与 Firefox 和 Android Chrome 保持一致。要启用该状态,您必须发送两个安全标头 Cross-Origin-Embedder-Policy: require-corpCross-Origin-Opener-Policy: same-origin

Spectre 的发现导致所有浏览器都禁用了 SharedArrayBuffer,但 Chrome 桌面可以使用专有的 Site Isolation 再次启用它。 Chrome 92 是它转向标准化方法的版本。

如上所述,应用这两个标头并启用“跨域隔离”是可行的方法,但您可能需要一些时间来设置它。作为一种逃避方式,您可以请求 an origin trial 将您的网站列入许可名单,以继续使用 SharedArrayBuffer,至少在 Chrome 96 之前不会进行跨源隔离。

要了解有关跨域隔离的更多信息,请阅读: