electron坑点:跨域,设置`webSecurity:false`无效

背景:electron + react +axios 项目
网络请求:登录、请求数据(需要携带cookie)
问题:在网络请求时报错,无法进行跨域,设置webSecurity:false也不行

问题

利用axios进行,登录、请求数据 等网络请求时,报出如下跨域拦截错误
在这里插入图片描述
根据报错内容提示,意思是说如果requestcredentials模式设置为“include”,那么服务器返回的response中的“Access-Control-Allow-Origin”不能是*
在网上搜索解决方法,有两种:

  • 第一种:放弃传cookie
    这种方法,如果项目里的网络请求确实没有携带cookie的需求,那么就可以在axios部分,不要设置withCredentials参数。withCredentials参数的默认值是false。
// withCredentials 属性设置为false 或者直接不设置
axios.defaults.withCredentials = false;

问题:如果项目中的网络请求,需要携带cookie这样的验证信息,那么就不能使用这种方法,所以我放弃了这种方法

  • 第二种:设置webSecurity:false 关闭CORS,支持跨域请求

我在使用这种方式时,发现依然会出现跨域报错,后来看了很多地方,最后在electron的github项目issue里发现了原因:
在这里插入图片描述
electron 9.0.0 以后的版本,设置webSecurity:false也无法关闭cors了。(链接:https://github.com/electron/electron/issues/23664

所以这里,为了解决这个问题,我修改并重新下载了electron 版本8.5.0
然后就解决就可以顺利请求数据了。

最后:设置webSecurity:false并非是一个好的方法,但是这是一个不需要修改后台的方法,所以在使用的时候要多多斟酌。


版权声明:本文为qq_33466661原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。