electron --unsafely-treat-insecure-origin-as-secure 问题解决 navigator.mediaDevices = undefined

2023-11-09

问题原因:

由于electron mainWindow.loadURL(‘http:127.0.0.1’) 访问是已http协议,而chrome浏览器在访问http请求时考虑隐私安全是无法打开许多Web API的(如:navigator.mediaDevices),你会发现 navigator.mediaDevices = undefined

在这里插入图片描述
问题如下:
https://github.com/electron/electron/issues/15298

由上连接可知以前的解决方法为:

app.commandLine.appendSwitch('unsafely-treat-insecure-origin-as-secure', 'http://127.0.0.1')

可是electron现在的官方文档内已不支持unsafely-treat-insecure-origin-as-secure属性

chrome浏览器内可调用navigator.mediaDevices的请求方法有:

localhost 域
开启了 HTTPS 的域
使用 file:/// 协议打开的本地文件https

由此看来我们只能使用https来请求对应数据了
可是我需要请求的是http://127.0.0.1
怎么才能时它变成https://127.0.0.1

解决方法:
OpenSSL生成自签名SSL证书域名设置127.0.0.1

OpenSSL生成自签名SSL证书最佳案例

OpenSSL怎么下载呢!下面是我下载的方式
winows运行cmd执行以下命令

iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
scoop  install openssl

生成后证书如下:
在这里插入图片描述
接下来就是服务端启动https服务 如下:
koa配置https最佳案例

import https from 'https'
import Koa from 'koa'
import path from 'path'
import fs from 'fs'
import app from 'app'
import sslify from 'koa-sslify'

const app = new Koa();
...
//强制将http转https
app.use(sslify())

const options = {
  //这里的路径写法因人而异
  key: fs.readFileSync(path.resolve('src/server/cert/server.key')),
  cert: fs.readFileSync(path.resolve('src/server/cert/server.crt'))
};
//开启https服务
https.createServer(options, app.callback()).listen(3000)

大功告成我们运行一下electron项目吧

mainWindow.loadURL('https:127.0.0.1') 

结果问题来了:
NET::ERR_CERT_AUTHORITY_INVALID
这是啥,翻译成中文就是ERR证书授权无效
为啥证书会无效呢,答案是: 你自己生成的当然是无效的!

那怎么解决这个问题呢!

答案来了!

还记得electrion官方文档app.commandLine.appendSwitch方法吗

//添加命令开关: (忽略证书相关的错误)
app.commandLine.appendSwitch('ignore-certificate-errors')
app.on('ready', createWindow)  //这个写在最下面

现在是真的ok啦 运行 electrion 打印如下结果:
在这里插入图片描述

那axios怎么忽略ssl证书相关错误问题呢
axios解决方法:

import https from 'https'
import axios from 'axios'
const axios = axios.create({
  'https://127.0.0.1:3000',
  httpsAgent: new https.Agent({
    rejectUnauthorized: false   //忽略ssl证书相关错误
  })
})

//请求
axios.get('/data')  //200
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

electron --unsafely-treat-insecure-origin-as-secure 问题解决 navigator.mediaDevices = undefined 的相关文章

  • 发送压缩文件 Spring

    我想通过我的 spring 控制器发送一个已经存在的压缩文件 但我不断收到这些错误消息org springframework web HttpMediaTypeNotAcceptableException Could not find ac
  • Jest 使用 window.require 测试 Electron/React 组件

    我目前正在创建一个使用 React 来创建界面的 Electron 应用程序 为了访问 fs 我一直在使用 const fs window require fs 在电子窗口中效果很好 问题是 当我为使用 window require fs
  • Electron JS 和 TypeScript - 在主流程中使用 TS-Node

    您将如何调整以下脚本以允许电子主进程将 Typescript 与 ts node 一起使用 scripts shell cross env NODE ENV development electron ts node app main ts
  • 从express.js 中删除所有标头

    我正在创建一个页面 其中有一些数据可以由另一个设备解析 我曾经使用 php 执行此操作 但现在将其移至 Node js 我需要从页面中删除所有标题 这样我就只有我的输出 此输出是对 GET 请求的响应 此刻我有 HTTP 1 1 200 O
  • Electron - 如何使用主进程和渲染进程

    此时 经过大量研究和谷歌搜索 我了解了 main 和 renderer 的作用 以及它们在 Electron 应用程序中的重要性 然而 我在这里向所有有知识的人发出我的请求 请给我一个机会clear解释如何在我的应用程序中具体实现这一点 我
  • 如何在没有 (L)GPL 库的情况下在 Python 中创建双重身份验证 HTTPS 客户端?

    客户端和服务器都是内部的 各自都有一个由内部CA签名的证书和CA证书 我需要客户端根据服务器拥有的 CA 证书来验证服务器的证书 它还应该将其证书发送到服务器进行身份验证 The urllib2手册说不执行服务器身份验证 PycURL是一个
  • 身份验证中的随机数使用

    在基于摘要的身份验证中 随机数由服务器生成 然而 在基于 OAuth 的身份验证中 随机数是由客户端生成的 我想知道是否有人知道差异的原因 随机数用于使请求唯一 在没有随机数的身份验证方案中 恶意客户端可以生成一次请求并重放多次 即使计算成
  • Electron:jQuery 未定义

    问题 在使用 Electron 进行开发时 当您尝试使用任何需要 jQuery 的 JS 插件时 即使您使用脚本标签加载到正确的路径 该插件也找不到 jQuery 例如 p Click me p jQuery should be loade
  • HTTP请求压缩

    一般用例 想象一下一个正在上传大量 JSON 的客户端 内容类型应保留application json因为这描述了实际数据 Accept Encoding 和 Transfer Encoding 似乎是为了告诉服务器应该如何格式化响应 看起
  • 如何通过 HTTP POST 发送充满对象的 NSArray?

    我在 iPhone 端有一个产品 购物清单 由具有名称 product id 等的产品对象组成 我希望将此列表发送到服务器 在那里我将服务器上的列表与 iphone 中的列表进行比较 以合并所做的更改并将合并的列表发送回 iphone 如何
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • 由于请求的资源上不存在“Access-Control-Allow-Origin”标头,无法获取与 Axios 的链接请求

    我正在尝试使用 cryptocompare api 来获取 axios 的 coindata 列表 但我不知道如何解决这个问题 我相信这是一个 CORS 问题 但我不确定 完整错误如下 加载失败https www cryptocompare
  • HttpRequest PUT内容到poco库中

    我想使用 HTTP PUT 请求将一些数据从 C 应用程序发送到服务器 我在用poco http pocoproject org我的应用程序中的网络库 我正在使用这个代码片段 HTTPClientSession session uri ge
  • Nuxt.js 使用 https 调用服务器端 API 的问题

    当我使用 HTTP 时 我遇到 nuxt 服务器端 API 调用问题S 在客户端 一切都很好 当我通过链接在客户端切换页面时 API 可以工作 但是当我按下 Ctrl f5 并且数据将在服务器端预取时 实际上没有 API 调用 也没有提供数
  • HTTP部分上传、断点续传的标准方法

    我正在开发 http 客户端 服务器框架 并寻找处理部分上传的正确方法 与使用带有 Range 标头的 GET 方法进行下载相同 但是 HTTP PUT 并不打算恢复 据我所知 PATCH 方法不接受 Range 标头 有没有办法通过 HT
  • 如何在Delphi中下载一个非常简单的HTTPS页面?

    我尝试了在这里看到的代码 但它不适用于 HTTPS 我需要将此页面作为字符串下载 并在其上添加一些换行符 以便将信息按顺序放入 TMemo 中 怎么做 我尝试使用 Indy 但由于 SSL 问题而失败 我尝试了此页面的解决方案 如何将网页下
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • 如何将 Cloud Firestore 数据库集合下载到 JSON 或 CSV 文件中?

    好的 事情是这样的 我已经在 Flutter Firebase 项目上工作了一段时间 现在我的客户想知道是否有机会从 Cloud Firestore 数据库的某个集合中获取 CSV o JSON 文件 以便稍后使用由Power Bi或其他一
  • HTTP代理服务器

    我开始研究一个用 C 编写的非常基本的 HTTP 代理服务器 Edit 只是转发我的请求的东西 此时我很难理解如何继续 任何帮助都会有益的 看一眼micro proxy http acme com software micro proxy
  • 返回重定向作为对 Ajax(fetch、XHR 等)请求的响应

    如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果服务器发送重定向 又名 302 响应加上 Location 标头 浏览器将自动遵循重定向 对此的回应second请求 假

随机推荐