前端使用ffmpeg出现ReferenceError: SharedArrayBuffer is not defined解决
qq_62851576 2024-09-03 12:03:01 阅读 68
问题原因:
“SharedArrayBuffer is not defined” 错误是因为在浏览器环境中,SharedArrayBuffer 对象被认为是一种潜在的安全风险。为了防止 Spectre 攻击等漏洞,现代浏览器通常会禁用或限制对 SharedArrayBuffer 的使用
SharedArrayBuffer 是一种 JavaScript 对象,用于在多线程环境中共享内存。然而,由于共享内存的特性,它可能导致安全漏洞。攻击者可以通过操纵共享内存来执行恶意代码,因此大部分浏览器对其进行了限制
具体问题详情可参考这篇文文章:https://juejin.cn/post/7065181402848837662#heading-0
解决办法:
本地运行解决方案:
在vue.config.js中的devServer中配置请求头:
<code> devServer: {
headers: {
// 如果需要用到ffmpeg合并视频,需要将COEP和COOP打开,来确保ShareArrayBuffer能够正常使用
'Cross-Origin-Embedder-Policy': 'require-corp',
'Cross-Origin-Opener-Policy': 'same-origin',
}
}
在vite.config.js中的devServer中配置请求头:
server: {
headers: {
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp'
},
生产环境运行解决方案:
vue路由要使用mode: "hash"的方式;
nginx部署,为指定路由加上请求头
location /ffmpeg {
root html/dist;
index dolphin-ffmpeg.html;
add_header Cross-Origin-Opener-Policy same-origin;
add_header Cross-Origin-Embedder-Policy require-corp;
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。