# electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题

news/2024/12/11 16:24:38/文章来源:https://www.cnblogs.com/wjw1014/p/18599885

electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题

这篇文章是接我cocos专栏的上一篇文章继续写的,我上一篇文章写的是 cocos 开发触摸屏项目,需要嵌入一个网页用来展示,最后通过 electron 打包成 exe 程序,而且网页里面是需要调用电脑摄像头进行拍摄的。

问题

通过前一篇文章确实实现了cocos 中使用 webview 嵌入页面调用摄像头进行拍摄,并且使用 electron 打包后也是没有问题的,但是当时开发的时候忽略了一个问题,就是跨域和安全性的问题。

因为上一篇文章使用的测试页面,是我本地电脑启动的服务,使用 localhost 进行访问,所以一切正常,但是如果是其他电脑启动这个服务,用 ip 地址的方式进行嵌入访问,就是出现摄像头打不开的问题,别说让用户授权是否允许访问摄像头,它连弹这个框都不弹出来。

原因

原因是什么呢,其实不管是嵌入的 webview,像是普通的谷歌浏览器、edge浏览器这些,如果直接访问另一台电脑的 ip 打开需要使用摄像头的网页,也是连弹窗都不弹窗,直接失败!

这是浏览器的安全机制,像是摄像头、麦克风这种涉密隐私数据,要求必须是安全访问,也就是必须要通过 https 的方式才会弹窗询问用户是否允许这个网页访问电脑摄像头,如果是 http 的话,浏览器会直接自动拒绝,连询问用户都不会询问,所以直接打不开。当然了,如果是本机的 localhost 的方式访问还是询问的。

解决办法

1. chrome 谷歌浏览器

如果是用谷歌浏览器访问的话,倒是也简单,只需要单独配置一下,当然正式上线肯定没法用了,需要安装证书,把 http 改成 https 就不会遇到这个问题。如果是单纯测试一下的话,只需要修改一下电脑的浏览器设置就行。

在浏览器地址栏输入: chrome://flags,点击回车进入配置:

在这里插入图片描述

然后输入:unsafely,敲击回车,然后选择“已启用”,在输入框输入允许访问的网站地址,如果多个地址的话拿英文逗号分开。编写完他就保存了,然后需要重启浏览器才会生效哈!需要重新启动一下浏览器。

在这里插入图片描述

重启之后,他会在浏览器顶部显示这样一句话,表示配置好了。

在这里插入图片描述

看提示也知道,这是不安全的,自己测试可以,平时不要自己改哈!

保证配置的没有出现问题,这样的话,你再去访问那个需要调用摄像头的 http 网页就会提示你是不是允许授权它访问电脑摄像头了。

谷歌浏览器是这样,其实 edge 浏览器也可以这样配置,是一样的。

记住,用完了改回去!

2. electron 打包 webview 页面配置

就像我们上篇文章,是使用的 webview,最后是用 electron 打包的,这种情况下没有配置页面怎么办?

这个时候就需要去配置一下 electron。

首先在 electron 的 main.js 文件中添加下面这段代码就可以了。


const { protocol } = require('electron')
const { app } = require('electron')protocol.registerSchemesAsPrivileged([{scheme: 'http',privileges:{standard: true,secure: true,bypassCSP: true,allowServiceWorkers: true,supportFetchAPI: true,corsEnabled: true,stream: true}}
])app.commandLine.appendSwitch('unsafely-treat-insecure-origin-as-secure', ['http://192.168.78.12:8080'])// 也可以设置全部  极其不建议!!!
app.commandLine.appendSwitch('unsafely-treat-insecure-origin-as-secure', ['*'])

然后就可以了,但是这样做的话很危险,极其不建议这样操作!有很大很大的安全风险!!!

app.commandLine.appendSwitch 方法用于向 Chromium 的命令行参数添加自定义开关。在您提供的代码段中,使用 unsafely-treat-insecure-origin-as-secure 开关,并将其值设置为一个包含单个元素 '*' 的数组。

这个开关的用途是允许开发者将不安全的源(通常是使用 HTTP 而非 HTTPS 的网站或应用)视为安全的。这通常用于开发环境,以便能够绕过浏览器对安全性的某些限制,这种行为非常不建议使用,虽然这个开关可以在开发过程中提供便利,但它带来了重大的安全风险,并且绝不应该在生产环境中使用。始终优先考虑应用的安全性,并避免在不受信任的环境中降低安全标准。

完成!

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

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

相关文章

制作一个简单的单片机上的boot系统

此篇文章在2023年3月24日被记录ARM单片机使用自定义bootloader 什么是BOOT 懂得计算机的同学都知道,电脑在开机时,从上电的那一刻开始,首先会进入bios,这个bios的作用就类似于单片机中的bootloader。万一我们浏览某些不可言状的网站导致系统崩溃时,我们就可以在这个临时的…

Amazon S3 概念及如何集成到 .net 8 C#

本文主要分为两个部分: 1、Amazon S3 相关概念 2、.net 集成的代码 * 阅读提示 :鼠标悬停在 章节标题 上可见 文章目录Amazon S3(Simple Storage Service)是一个高度可扩展、数据可用性高、安全性强的对象存储服务。 Amazon S3 使用对象存储架构,数据以对象的形式存储在桶…

SAP QM 客户退货检验的三种实现方案

SAP QM 客户退货检验的三种实现方案在SAP项目上,客户退货检验场景经常遇到。如果项目上启用QM模块,要在SAP 里实现客户退货场景的质量检验,有三种实现方式。本文将对这三种实现方案做简要说明,与同行共勉。1, 客户退货的收货启用移动类型651,物料激活检验类型06, 退货交货…

违规抽烟识别智慧矿山一体机在矿山监控项目中,如何选择合适的POE网络摄像机以及常见问题处理?

随着技术的飞速进步,POE(Power over Ethernet,以太网供电)技术在安防监控领域的应用越来越广泛,它为网络监控施工带来了革命性的改变。POE技术允许通过单一的以太网电缆同时传输数据和电力,大大简化了监控系统的布线复杂度,并降低了安装成本。在矿山监控系统中,选择适合…

ProCom: A Few-shot Targeted Community Detection Algorithm翻译

ProCom: A Few-shot Targeted Community Detection Algorithm翻译 ProCom:一种少样本目标社区检测算法 Xixi Wu; Kaiyu Xiong KDD 2024 复旦大学 Yun Xiong 通信作者 社区检测方法标注数据较少,论文通过预训练提示学习的方法解决该问题。 3方法 在本节中,将介绍提…

Github上博客园SimpleMemory主题美化插件使用体验

Github上博客园SimpleMemory主题美化插件使用体验 目录Github上博客园SimpleMemory主题美化插件使用体验基本设置SimpleMemory插件地址管理选项管理侧边栏管理页面定制合影 基本设置 进入博客园管理界面,完成基础设置。皮肤模版 选择SimpleMemory作为基础模版。 JS权限 如果开…

低成本解决方案,RK3506的应用场景分析!

RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低…

debug模式调试代码

第一步 打断点 点击debug的图标 鼠标遮住的就是debug按钮 第二步 按F8 单步执行 如果是函数F7会进入函数内部调试 从函数中退出 shift +F8

中电金信携手中远海科,共启贸易金融数智新篇章

在数智化转型成为驱动经济社会高质量发展的新引擎背景下,“数智方案”栏目聚焦金融等国计民生重点行业场景,依托中电金信“源启筑基+咨询引领+应用重构”的产品及服务体系,输出市场洞察和行业解决方案、应用案例,旨在全面推动行业IT架构升级、数智化转型。近年来,全球化进…

Topology-Driven Multi-View Clustering via Tensorial Refined Sigmoid Rank Minimization翻译

Topology-Driven Multi-View Clustering via Tensorial Refined Sigmoid Rank Minimization翻译 通过张量化改进的Sigmoid秩最小化实现的拓扑驱动多视图聚类 Zhibin Gu KDD 2024 北京交通大学 冯松鹤 通信作者 PANDA模型从欧几里得图中提取拓扑结构,以有效捕捉数据点…

解决跨境电商痛点:文档管理软件不可或缺

对于跨境电商卖家来说,业务管理的复杂程度远高于单一市场。面对产品信息翻译、市场调研、物流方案制定以及售后服务等多重任务,如何高效管理文档成为了一项关键能力。而随着双十二的临近,订单量激增,许多卖家面临的并非流量不足,而是管理失控。 从“杂乱文档”到“高效协作…

docker 部署的 蓝鲸bk-cmdb 的一些注意事项

官方地址: https://github.com/TencentBlueKing/bk-cmdb/blob/master/docs/wiki/container-support.md 官方的一些安装文档的槽点 1、没有告知docker部署的登录用户和密码。 2、什么信息也不给就直接恭喜你能用了:假设系统的地址是192.168.1.100,我部署时将端口映射为“-p 8…