解决electron + react单页应用调用localhost服务失败

发布日期:2023-07-17 阅读(0) 评论(0) 赞(0)
问题原因: 初次使用 electron,在本地使用node起了后台服务后,打包成exe程序安装成功,但是无法调通http://localhost:8080/api接口,又试了 http://127.0.0.1:8080/api,问题依旧没有解决。 排查后&#xff…

问题原因:

初次使用 electron,在本地使用node起了后台服务后,打包成exe程序安装成功,但是无法调通http://localhost:8080/api接口,又试了 http://127.0.0.1:8080/api,问题依旧没有解决。

排查后,发现代码没有任何问题。思索再三,觉得还是跟域名限制或端口限制有关。然后大概确认是受同源策略限制了,经过查阅文档,发现可通过配置 webSecurity属性来关闭同源策略限制。

然后,问题解决。

import { app, BrowserWindow } from 'electron'mainWindow = new BrowserWindow({webPreferences: { webSecurity: false }
})

electron 官方文档 - browserwindowoptions

思考:

众所周知,electron的架构为:

electron = chromium + nodejs + native API

我想了一下,如果使用 nodejs 或者native net 发送网络请求,是可以完美规避跨域问题的。

但是由于我使用的是 react 的框架,集成了electron方案,接口调用使用的是 umi-request,所以本质上还是通过chromium媒介发送出来的请求,受到了同源策略限制。这是问题所在!

总结:

这两种发送请求的方式,都不受浏览器同源策略的影响。

  • 通过nodejs发送网络请求
  • 通过electron的net模块发送网络请求
相关文章
    最新文章
    热门标签