背景:electron + react +axios 项目
网络请求:登录、请求数据(需要携带cookie)
问题:在网络请求时报错,无法进行跨域,设置webSecurity:false也不行
问题
利用axios进行,登录、请求数据 等网络请求时,报出如下跨域拦截错误
根据报错内容提示,意思是说如果request的credentials模式设置为“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版权协议,转载请附上原文出处链接和本声明。