You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Axios GET请求中传入X-Auth-Token后遇CORS错误,求解决方案

解决CORS错误的可行方案

方法一:React开发环境配置代理(推荐)

在项目根目录的package.json中添加代理字段,将API请求转发到目标服务器,绕过浏览器的CORS限制:

{
  "name": "your-react-project",
  "proxy": "https://api.football-data.org"
}

修改前端请求代码,使用相对路径发起请求,同时修正组件中请求的执行时机和异常处理:

import axios from 'axios';
import React, { useEffect } from 'react';

function LeagueTable() {
  // 改为相对路径,由代理转发请求
  const api = '/v4/teams/19';

  useEffect(() => {
    // 把请求放到useEffect中,确保组件挂载后仅执行一次
    axios.get(api, {
      headers: {
        'X-Auth-Token': '****',
      },
    })
    .then(response => {
      // 处理返回数据
      console.log(response.data);
    })
    .catch(error => {
      // 捕获并处理异常
      console.error('请求失败:', error);
    });
  }, []);

  return (
    <div>
    </div>
  );
}

export default LeagueTable;

注意:该方案仅适用于开发环境,生产环境需要在部署服务器(如Nginx)上配置反向代理。

方法二:搭建后端代理服务器

自己实现一个简单的后端服务(以Node.js + Express为例),作为前端与目标API的中间层。由于后端请求不受浏览器CORS限制,可由后端代为发起请求并返回结果:
后端示例代码:

const express = require('express');
const axios = require('axios');
const app = express();
const PORT = 3001;

// 代理API请求
app.get('/api/teams/19', async (req, res) => {
  try {
    const apiResponse = await axios.get('https://api.football-data.org/v4/teams/19', {
      headers: {
        'X-Auth-Token': '****'
      }
    });
    res.json(apiResponse.data);
  } catch (err) {
    res.status(err.response?.status || 500).json(err.response?.data || '请求出错');
  }
});

app.listen(PORT, () => {
  console.log(`代理服务器运行在端口${PORT}`);
});

前端修改请求地址为代理服务器地址:

const api = 'http://localhost:3001/api/teams/19';

方法三:确认API是否支持前端CORS配置

部分API提供商允许开发者添加前端域名到CORS白名单,或提供专门的前端访问凭证。可查阅football-data.org的官方文档,确认是否有针对前端调用的CORS配置选项,比如将你的项目域名添加到允许列表中。


内容的提问来源于stack exchange,提问作者notmoot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:40:28