首页 > 解决方案 > 在 Electron 中捆绑的 React 应用程序中使用 axios 的 API 调用返回 400

问题描述

只是一个简单的问题:

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

当应用程序用 Electron 包装时,请求返回“需要 400 个标头”错误。当运行 React 的开发版本时,它会正确调用 api。

知道为什么会这样吗?

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

感谢您的帮助!

标签: reactjselectronaxios

解决方案


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

我调用的第 3 方 API 没有启用 CORS,当我在 React 中本地开发时,我不得不使用 CORS 代理。

话虽如此,当我将应用程序捆绑到 Electron 中时,对https://cors-anywhere.herokuapp.com/的调用会返回“需要 400 标头”,因为这就是代理处理非 CORS 相关调用的方式。如果它没有像这样响应,您可以将其用作一般代理。

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


推荐阅读