Vue使用ffmpeg,报ReferenceError: SharedArrayBuffer is not defined 如何解决

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端面试:【代码质量与工程实践】单元测试、集成测试和持续集成

在现代软件开发中,确保代码质量是至关重要的。单元测试、集成测试和持续集成是关键的工程实践,用于提高代码的可靠性和可维护性。本文将深入探讨这些概念,以及它们如何在软件开发中发挥作用。 1. 单元测试(Unit Testing&#xff0…

SpringBoot案例-登录校验-概述

登录存在的问题 在未登录的情况下,我们也可以直接访问部门管理、员工管理等功能由于Http协议是无状态的,即每次请求都是独立的,下一次的请求不会携带上一次的数据,服务器无法判断是否已经登录。 登录校验 如何实现登录校验 在员…

Agile Iteration Velocity

【agile iteration velocity】敏捷速度指的平均速度 第四次迭代结束速度: 76 / 4 19 第五次迭代结束速度: (76 24 ) / 5 100 / 5 20

spark第四课

countByValue 数据源中相同的值有多少个,也就是WordCount countByKey 表的是键值对中的key出现了几次,与Value的值无关 不推荐collect,因为他是将数据放入内存,但是内存不够大的话,就容易崩,所以使用saveAsTextFile更好,直接放入磁盘. 保存成对象文件,需要序列化 启动了2个 J…

【Spring Boot】社交网站中验证用户登录的checkUser方法

public boolean checkUser(User user) {User userInDb userRepository.findByUsername(user.getUsername());if (userInDb ! null && userInDb.getPassword().equals(user.getPassword())) {return true;} else {return false;}} } 这段代码是UserService类中的checkU…

并查集(种类并查集,带权并查集)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都…

C++有向、无向完全图的边数

一、无向完全图 一个拥有n个结点的无向完全图的边数为: 公式: 简写: (表示个顶点中有条边) 具体的解释: 比如我们有一个拥有个结点的无向完全图 我们首尾依次连接,共有条边。 然后我们选择…

九、pikachu之敏感信息泄露

文章目录 1、敏感信息泄露概述2、实战 1、敏感信息泄露概述 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。 比如: 通过访问url下的目录,可以直接列出目录下的文件列表;输入错误的url参数后报错信息里面…

Windows - DWM - 桌面窗口管理器内存泄漏BUG(桌面窗口管理器内存占用过高)

Windows - DWM - 桌面窗口管理器内存泄漏BUG(桌面窗口管理器内存占用过高) 前言 有时候笔记本使用者使用者就感觉不对劲,有种强烈的延时感。打开任务管理器一看,好家伙,桌面窗口管理器(Desktop Window Ma…

Java中Comparable和Comparator有什么区别?

1. 字面含义不同 Comparable字面意思是“具有比较能力”,Comparator字面意思是“比较器”。 2. 用法不同 Comparable用法:对需要排序的类,实现Comparable接口,重写compareTo()方法。 Comparator用法:创建自定义比较…

OpenCV基础知识(7)— 腐蚀与膨胀

前言:Hello大家好,我是小哥谈。腐蚀和膨胀是图像形态学中的两种核心操作,通过这两种操作可以清除或者强化图像中的细节。本节课就对OpenCV中的腐蚀和膨胀操作进行详细的介绍。🌈 前期回顾: OpenCV基础知识(…

记录--为什么要使用 package-lock.json?

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 随着JavaScript在现代软件开发中的日益重要地位,Node.js生态系统中的npm成为了不可或缺的工具。在npm管理依赖的过程中,package-lock.json文件的作用日益凸显。本文将深入…

LeetCode108. 将有序数组转换为二叉搜索树

108. 将有序数组转换为二叉搜索树 一、题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1&#x…

Linux 网络编程 和 字节序的概念

网络编程概述 不同于之前学习的所有通讯方法,多基于Linux内核实现,只能在同一个系统中不同进程或线程间通讯,Linux的网络编程可以实现真正的多机通讯! 两个不相关的终端要实现通讯,必须依赖网络,通过地址…

【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)

阅读导航 前言一、继承的概念及定义1. 继承的概念2.继承的定义⭕定义格式⭕继承关系和访问限定符⭕继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承⭕单…

Web安全测试(一):HTTP请求详解

一、前言 结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部文章请访问专栏:《全栈安全测试教程(0基…

软考高级系统架构设计师系列之:论文典型试题写作要点和写作素材总结系列文章二

软考高级系统架构设计师系列之:论文典型试题写作要点和写作素材总结系列文章二 一、论基于DSSA的软件架构设计与应用1.论文题目2.写作要点和写作素材二、论信息系统建模方法1.论文题目2.写作要点和写作素材三、论高可靠性系统中软件容错技术的应用1.论文题目2.写作要点和写作素…

4.物联网LWIP之C/S编程,stm32作为服务器,stm32作为客户端,代码的优化

LWIP配置 服务器端实现 客户端实现 错误分析 一。LWIP配置(FREERTOS配置,ETH配置,LWIP配置) 1.FREERTOS配置 为什么要修改定时源为Tim1?不用systick? 原因:HAL库与FREERTOS都需要使用systi…

《基于 Vue 组件库 的 Webpack5 配置》4. 压缩 CSS 和 js 文件

压缩 CSS 使用 webpack 插件 css-minimizer-webpack-plugin,需要额外安装 npm i css-minimizer-webpack-pluginlatest -D;压缩 js 使用 webpack 自带插件 terser-webpack-plugin,无需额外安装;package.json 的配置如下 const Css…

深度学习入门教学——二分分类

1、什么是二分分类? 二分分类就是判断“有”和“没有”、“是”和“不是”的问题,也就是监督学习中的分类问题。例如,输入一张图片,输出识别该图片的标签。计算机输入图片转化过程如下: 2、神经网络常用符号表示 (x, …