「Electron|问题记录」解决应用调用loadURL访问没有ssl证书的http网址连接失败的问题

Table of Contents

问题说明

代码说明

在electron的入口函数中,创建了一个窗口,然后使用loadURL加载一个互联网上的网页,代码如下:

1const { app, BrowserWindow } = require('electron') 2const createWindow = () => { 3 const win = new BrowserWindow({ 4 width: 800, 5 height: 600 6 }) 7 win.loadURL("http://www.xxxxxxxxx.com/") 8} 9 10 11app.whenReady().then(() => { 12 createWindow() 13 })

程序运行结果

使用npm start运行之后,窗口创建完成,但是内容为空。即,加载网址失败,同时命令输入如下内容:

1[15196:1215/164920.190:ERROR:ssl_client_socket_impl.cc(982)] handshake failed; returned -1, SSL error code 1, net_error -101 2[15196:1215/164920.492:ERROR:ssl_client_socket_impl.cc(982)] handshake failed; returned -1, SSL error code 1, net_error -101

问题原因

如题所说,访问的网址是一个没有配置ssl证书的网址。这意味着访问将尝试建立一个不安全的连接,而ssl证书验证失败,无法建立连接。 所以我们要做的是:如何让electron允许建立不安全的http连接

解决方法

在建立连接之前,先设置忽略认证异常,即修改代码如下:

1const { app, BrowserWindow } = require('electron') 2const createWindow = () => { 3 const win = new BrowserWindow({ 4 width: 800, 5 height: 600 6 }) 7 win.loadURL("http://www.japanesejump.com/") 8} 9 10 11app.whenReady().then(() => { 12 app.commandLine.appendSwitch('ignore-certificate-errors') 13 createWindow() 14 })

再次运行,页面顺利加载~

如果对你有帮助,就点个赞吧~👇

Mastodon