使用 axios 从 React 前端启用 CORS?

2024-01-18

我在前端使用 React,并且从我不拥有的另一个域调用 API。我的 axios 请求:

axios(requestURL, {
        method: 'GET',
        headers: {
            'Access-Control-Allow-Origin': '*',
            'Content-Type': 'application/json',
            'Authorization': key,
            withCredentials: true,
            mode: 'no-cors',
          }

我不断收到相同的错误:缺少 CORS 标头“Access-Control-Allow-Origin”。这是我可以从前端克服的吗?我知道人们使用该 API,所以它不可能是后端错误,对吗?我尝试请求很多 API,但没有一个能够使用我的代码。我尝试使用https://cors-anywhere.herokuapp.com https://cors-anywhere.herokuapp.com它运行了大约一周,效果很好,我想今天就失效了。我希望我的网站保持 24/7 全天候运行,因此不能选择使用代理


不幸的是,您需要以某种方式代理该请求。出于安全原因,CORS 请求将被浏览器阻止。为了避免这种情况,后端需要为您注入允许原始标头。

解决方案取决于您需要代理、开发或生产的位置。

开发环境或node.js生产网络服务器

在这种情况下,最简单的方法是使用'http 代理中间件'npm 包

const proxy = require('http-proxy-middleware');

module.exports = function (app) {
    app.use(proxy('/api', {
        target: 'http://www.api.com',
        logLevel: 'debug',
        changeOrigin: true
    }));
};

生产 - 您拥有完全访问权限的 Web 服务器检查以下页面以了解如何在您的网络服务器上启用此类代理:

https://enable-cors.org/server.html https://enable-cors.org/server.html

生产 - 静态托管/Web 服务器,无完全访问权限

如果您的主机支持 PHP,您可以添加一个 php 脚本,例如:https://github.com/softius/php-cross-domain-proxy https://github.com/softius/php-cross-domain-proxy

然后从您的应用程序向脚本发出请求,脚本将转发该请求并在响应中注入标头

如果您的主机不支持 PHP不幸的是,您将需要依赖一种类似于您所使用的解决方案。

为了避免依赖第三方服务,您应该在您将使用的地方部署代理脚本。

我的建议是:

  • 转移到支持 php 的主机:)(Netlify 可能是一个解决方案,但我不确定)

  • 您可以将自己的基于 Node.js 的代理脚本部署到 Firebase(例如 Firebase 函数),以确保它不会神奇地崩溃,并且免费计划可以处理您的请求量。

  • 创建一个免费的 Amazon AWS 帐户,您将在其中免费获得一年的最小实例,并在那里运行带有 nginx 代理的 ubuntu 服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 axios 从 React 前端启用 CORS? 的相关文章

随机推荐

  • 使用 Gson 序列化匿名类

    有什么原因无法将匿名类序列化为 Json 吗 Example public class AnonymousTest private Gson gson new Gson public void goWild this callBack ne
  • 如何在 PM2 启动之前(之前)需要 dotenv/config 文件

    我像这样运行节点应用程序 node r dotenv config dist app 我需要使用 PM2 类似的东西 pm2 start r dotenv config dist app js name appname doesn t wo
  • 如何使用javascript下载文件?

    我希望能够在按下按钮时下载给定的文件 该文件将通过API现在 我将其保存在本地存储中 所以我的文件夹是这样的 rootFolder JS file HTML file download file sample csv 如何创建下载link
  • 在我更改 'inheritFromWidgetOfExactType' 后,我开始收到 3 个不同的新错误

    3 个新错误是 错误 没有名称为 shadowThemeOnly 的命名参数 上下文 找到了该候选人 但参数不匹配 错误 没有为该类定义 getter addressOf 当我收到以下原始错误时就开始了 错误 未为类 BuildContex
  • 使用不同工具链存档时,Xcode 不支持“Enable Bitcode=YES”

    我已将 启用位码 设置为YES在我的构建设置中 当我使用默认工具链在 Xcode 9 2 中存档我的框架时 然后运行命令检查位码是否在二进制文件中otool arch arm64 l MyFrameworkBinary grep LLVM
  • 我很好奇 ldc 在 JVM 中的缩写是什么?

    ByteCode ldc将一个单字常量压入操作数栈 ldc 采用单个参数 它是要推送的值 JVM中的大部分字节码都可以通过代码描述得知它们的名称 然而 ldc 我没有看到任何线索 它是负载常数 它将常量池中的一项加载到堆栈上 可用的类型有
  • Xamarin 形式的 iPhone X 中的额外底部和顶部空间

    我使用 XAML 进行 UI 设计 我的应用程序在 Iphone X 设备上运行良好 Iphone X 中唯一的问题是顶部和底部有额外空间 如果我使用下面的代码来启用 Iphone X 安全区域 它会在底部和顶部获得更多空间 On
  • 无法删除 matplotlib polycollection 中的原点

    我尝试了 matplotlib 教程中的 PolyCollection 示例 并注意到一件奇怪的事情 我无法从轴原点删除这个点 见图 我该如何处理这个问题 from mpl toolkits mplot3d import Axes3D fr
  • 如何从原生 php 转换为 codeigniter

    我有以下数据库和PHP 我正在尝试制作类别菜单的无序列表 原来的 php 是自己工作的 我正在尝试将其转换为 Codeigniter 中的 MVC 以下是我到目前为止所得到的结果 但无法正常工作 如果有人能指出我做错了什么 我将不胜感激 D
  • SQL:如何从单个列中选择满足多个条件的单个 id(“行”)

    我有一个非常窄的表 user id ancestry user id 列是不言自明的 祖先列包含用户祖先的国家 地区 一个用户可以在表上拥有多行 因为一个用户可以拥有来自多个国家 地区的祖先 我的问题是 如何选择祖先来自多个指定国家 地区的
  • 在汇编中生成随机数

    我是汇编新手 在生成随机数时遇到问题 我的代码很简单 它在中生成 100 个数字0 25范围并将它们存储在数组中 我遇到的问题是 当我在emu8086汇编程序成功运行并生成 100 个随机数 并将其存储在数组中 但是当我在masm611 每
  • 如何在 C# 中使用 SqlTransaction

    我正在使用以下代码同时执行两个命令 我使用 SqlTransaction 来确保所有命令都得到执行或回滚 当我在没有 事务 的情况下运行程序时 它运行正常 但是当我对他们使用 交易 时 他们显示错误 My code SqlTransacti
  • 如何在 tsconfig.json 中指定多个源文件夹?

    我目前有以下项目结构 project tsconfig json webpack config js package json node modules lots of dependencies typings lots of d ts f
  • 从应用程序洞察中删除跟踪

    我已使用 Application Insights 在 Azure 中部署了我的项目 部署后 我做了一些测试 了解为什么一些跟踪写入各自的 Application Insights 中 但是 我只想要一个新的 没有任何痕迹 Applicat
  • 向事件添加委托 - 线程安全

    可以从多个线程同时执行以下代码 this sequencer Completed OnActivityFinished 从多个线程向事件处理程序添加委托是否是线程安全的 从多个线程中删除事件处理程序的委托是否是线程安全的 使该线程安全的最简
  • 无法在 Spring 3 REST Web 服务中反序列化 START_ARRAY 令牌之外的对象实例

    我正在利用Spring提供的这个很酷的东西 Spring RESTWebService spring的版本是3 如果我从浏览器访问 URL 我可以看到 JSON 响应 但从客户端端点 Android 应用程序 我收到此错误消息 Caused
  • 单括号和双括号 Numpy 数组有什么区别?

    import numpy as np a np random randn 1 2 b np zeros 1 2 print Data type of A type a print Data type of A type b Output D
  • 针对 XSD 的 XML 验证:元素必须没有字符或元素信息项

    为什么我的 XML 无法根据以下 XSD 进行验证 我的 XML 文件是这样的
  • 如何在模块中导入 lib 文件夹

    我有一个 GAE 应用程序 其中包含三个模块和一个 lib 文件夹 当我尝试从 lib 文件夹导入第 3 方库时 GAE 弹出导入错误 我可以通过将 lib 符号链接到 Module 1 lib 和 Module 2 lib 并在每个模块中
  • 使用 axios 从 React 前端启用 CORS?

    我在前端使用 React 并且从我不拥有的另一个域调用 API 我的 axios 请求 axios requestURL method GET headers Access Control Allow Origin Content Type