Electron使用iframe标签,出现跨域问题的有效解决办法

原创 野人  2021-10-17 09:01  阅读 144 次
电费/话费9折起

最近,用Electron的频率有点高,毕竟这玩意,基本上所需要的语言都是前端的,本身就是搞这块的,所以上手还是很快的,但是还是遇到了一些问题,尤其的跨域的问题非常多,这里给大家好好讲讲。

首先跨域的原因,就是浏览器上有个同源策略,即同协议,同域名,同端口,更多这方面的资料可以,浏览浏览器的同源策略

而在Electron中为什么会出现跨域呢,因为Electron内部就是嵌套了一个Chromium,精简版的谷歌浏览器,所以浏览器有的功能,Electron自然也有了,浏览器有安全的限制,Electron也有,反正就把Electron当作个套壳浏览器就对了。

那么到底怎么解决这个问题呢?

直接上代码吧。

//main.js
const { app, BrowserWindow } = require('electron');
app.commandLine.appendSwitch('disable-site-isolation-trials');//这行一定是要加的,要不然无法使用iframe.contentDocument方法
mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
        webSecurity: false,//关闭安全性功能,支持跨域请求
    },
});

关于这条命令disable-site-isolation-trials,在Github是有讨论,本来只要配置了webSecurity这个选项就可以了,但是由于Electron的bug,所以才需要额外加这条命令。

相关的讨论,大家可以看:Unable to access iframe contentDocument when webSecurity disabled.

本文地址:https://www.yerenwz.com/4856.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!

发表评论