在Electron中捆绑的React应用中使用axios进行的API调用返回400

时间:2018-08-31 08:44:38

标签: reactjs electron axios

一个简单的问题:

我正在构建一个React / Electron应用程序,并且在React应用程序内部,我有一些对API的异步/等待调用。这些调用是使用axios进行的,并且在开发中可以正常工作。

当应用程序包装在Electron中时,请求返回,并显示“ 400 Headers required”错误。运行React的开发版本时,它会正确调用api。

知道为什么会这样吗?

我遇到了WebRequest Electron方法https://electronjs.org/docs/api/web-request。看起来我可以拦截请求并更改标头,但是必须这样做似乎很奇怪。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题似乎出在我的CORS代理https://cors-anywhere.herokuapp.com/上。

我正在调用的第三方API尚未启用CORS,而当我在React中进行本地开发时,我不得不使用CORS代理。

也就是说,当我将应用程序捆绑在Electron中时,对https://cors-anywhere.herokuapp.com/的调用将返回“ 400 Header required”,因为那是该代理处理与非CORS相关的调用的方式。如果它没有像这样响应,则可以将其用作常规代理。

因此,从我的链接中删除了CORS代理网址后,该应用程序即可在Electron内运行。按照这种逻辑,我想这意味着默认情况下,Electron内部的渲染API调用(来自React)不受CORS的影响。