微网站建设申请,株洲市建设局网站,怎么做网站滑动图片部分,网站主体负责人 法人“SharedArrayBuffer is not defined” 错误是因为在浏览器环境中#xff0c;SharedArrayBuffer 对象被认为是一种潜在的安全风险。为了防止 Spectre 攻击等漏洞#xff0c;现代浏览器通常会禁用或限制对 SharedArrayBuffer 的使用。
SharedArrayBuffer 是一种 JavaScript 对…“SharedArrayBuffer is not defined” 错误是因为在浏览器环境中SharedArrayBuffer 对象被认为是一种潜在的安全风险。为了防止 Spectre 攻击等漏洞现代浏览器通常会禁用或限制对 SharedArrayBuffer 的使用。
SharedArrayBuffer 是一种 JavaScript 对象用于在多线程环境中共享内存。然而由于共享内存的特性它可能导致安全漏洞。攻击者可以通过操纵共享内存来执行恶意代码因此大部分浏览器对其进行了限制。
什么是SharedArrayBuffer
在讨论SharedArrayBuffer 我们可以很容易地把注意力集中在物理词上。“共享”、阵列 和 “缓冲区”。
数组是一种数据结构在编程中用来存储由不同数据类型字符串、布尔值、数字和对象组成的数据元素。缓冲区是内存存储的一部分用于在发送或接收使用前暂时存储数据。
ArrayBuffer是一个与其他不同的数组–它是一个字节数组意味着只接受字节。
要在JavaScript中使用共享内存你需要创建SharedArrayBuffer 。这是通过使用SharedArrayBuffer 对象来完成的它创建了一个新的对象构造器用于在多个线程之间写入和共享数据。
SharedArrayBuffer的历史
2018年1月5日由于现代CPU架构中发现的漏洞攻击SharedArrayBuffer 在所有主要浏览器中被禁用。
此后SharedArrayBuffer 在谷歌浏览器 v67 中被重新启用现在可以在启用其网站隔离功能的平台上使用我们将在本文的后续部分介绍。这一更新可以防止Spectre漏洞的攻击使你的网站更加安全。
什么是跨源隔离
跨源隔离是一项新的安全功能截至2021年4月被添加到浏览器中。简而言之它是在你的顶层文件上发送两个HTTP头信息COOP和COEP的结果。这些头信息使你的网站能够获得对网络API的访问如SharedArrayBuffer 并防止外部攻击Spectre攻击、跨源攻击等。
以前使用共享内存的网站可以未经许可加载跨源内容。这些网站可以与非同一来源的窗口弹出式广告互动有可能造成安全漏洞或通过漏洞获取网站的用户信息。对于使用共享内存的网站来说安全并同时保护用户信息变得非常重要。
以上问题内容均来自掘金上的这篇文章https://juejin.cn/post/7065181402848837662#heading-0
本地运行解决方案
在vue.config.js中的devServer中配置请求头 devServer: {headers: {// 如果需要用到ffmpeg合并视频需要将COEP和COOP打开来确保ShareArrayBuffer能够正常使用Cross-Origin-Embedder-Policy: require-corp,Cross-Origin-Opener-Policy: same-origin,}}查看当前环境是否支持使用ShareArrayBuffer在浏览器控制台输入crossOriginIsolated来校验 MDN地址https://developer.mozilla.org/zh-CN/docs/Web/API/crossOriginIsolated
本地运行最好是用localhost不用ip
如果使用的是vite也是同理
生产环境运行解决方案
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;
}