reactjs - 在 Electron 中捆绑的 React 应用程序中使用 axios 的 API 调用返回 400
问题描述
只是一个简单的问题:
我正在构建一个 React/Electron 应用程序,在 React 应用程序中我有一些对 API 的异步/等待调用。这些调用是使用 axios 进行的,并且在开发时可以正常工作。
当应用程序用 Electron 包装时,请求返回“需要 400 个标头”错误。当运行 React 的开发版本时,它会正确调用 api。
知道为什么会这样吗?
我遇到了 WebRequest Electron 方法https://electronjs.org/docs/api/web-request。看起来我可以拦截请求并更改标头,但必须这样做似乎很奇怪。
感谢您的帮助!
解决方案
看起来问题出在我的 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 的影响。
推荐阅读
- python-3.x - 停止 ttk.Entry() 读取键盘
- xmlhttprequest - 从 Greasemonkey 脚本拦截 XMLHttpRequest 失败
- excel - VBA 查找不匹配
- canvasjs - 试图将 X 轴设置为“mm:ss”
- r - 有没有办法在脚本结束时在主板上发出哔哔声/播放声音?
- javascript - 如何遍历 Socket.IO 中的房间?
- arrays - 如何在 .ts 文件中使用嵌套数组
- perl - 在 perl 中,子声明中带括号的“$”列表是什么意思?
- python - 你能在 Python 中确定一个类似于 datetime 的 toordinal 和 fromordinal 的序数周吗?
- python - 如何从“for”循环返回值?