在localhost上启用SharedArrayBuffer



在尝试运行ffmpeg.wasm时,我一直收到一个"SharedArray Buffer is not defined"错误。这似乎是在Webassembly方面。无论如何,我知道这是一个可以通过跨源隔离来克服的问题。然而,我正试图在本地主机上运行它,据我所知,跨源隔离并没有帮助。我试着按照本指南底部的说明操作,但没有成功。我也尝试过更改Chrome//标志的方法,但也不起作用。我只需要能够在浏览器中运行ffmpeg/wasm,但有点麻烦。有什么想法吗?

localhost服务器应该提供所需的响应头:

$ 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)

您可以通过为页面提供以下响应标头来隔离跨源页面:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

如果您使用NGINX作为代理,您只需将以下代码添加到要添加标头的位置块::

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};

相关内容

  • 没有找到相关文章

最新更新