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

React客户端调用.NET Core API遇CORS错误的解决方法咨询

解决React调用.NET Core API的CORS错误问题

首先纠正你前端代码里的无效操作:你设置的axios.defaults.headers.common["Access-Control-Allow-Origin"] = "*"完全没用——Access-Control-Allow-Origin是后端服务器需要返回给浏览器的响应头,前端自己添加这个请求头不会被浏览器认可,反而可能干扰正常请求,直接删掉这行代码。

下面提供两种可行的解决方案:


方案1:在.NET Core API中配置CORS(推荐生产+开发环境使用)

CORS是后端层面的权限控制,正规解决方案是在API中启用并配置允许的跨域来源:

1. 安装CORS依赖(如果未安装)

在Visual Studio的NuGet包管理器中安装Microsoft.AspNetCore.Cors,或者使用CLI命令:

dotnet add package Microsoft.AspNetCore.Cors

2. 在Program.cs中配置CORS策略

打开API项目的Program.cs,添加CORS服务并启用中间件(注意中间件顺序):

var builder = WebApplication.CreateBuilder(args);

// 配置CORS策略,允许React开发服务器的来源
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowReactLocal", policy =>
    {
        policy.WithOrigins("http://localhost:3000") // 指定React的运行地址
              .AllowAnyHeader()
              .AllowAnyMethod();
    });
});

// 添加控制器服务
builder.Services.AddControllers();

var app = builder.Build();

// CORS中间件必须放在UseRouting之后、UseAuthorization之前
app.UseRouting();
app.UseCors("AllowReactLocal"); // 启用刚才定义的CORS策略
app.UseAuthorization();

app.MapControllers();

app.Run();

如果需要临时允许所有本地来源(比如开发时端口经常变动),可以把WithOrigins("http://localhost:3000")替换为AllowAnyOrigin(),但生产环境必须指定具体的域名,禁止使用AllowAnyOrigin()。

3. 验证效果

重启.NET Core API服务,再运行React项目调用接口,CORS错误即可消除。


方案2:React开发环境配置代理(仅适合开发调试)

如果不想修改后端配置,仅在开发阶段快速调试,可以通过React代理转发请求,绕过浏览器的CORS检查:

1. 创建代理配置文件

在React项目根目录(和package.json同级)创建setupProxy.js文件,写入以下代码:

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:7071', // 你的API地址
      changeOrigin: true,
    })
  );
};

2. 修改React中的请求地址

把原来的完整API地址改为相对路径:

function GetApiResults(){
    const axios = require('axios').default;

    axios({
        method: 'get',
        headers: { 'Content-Type': 'application/json' },
        url: '/api/Users', // 去掉域名,只保留接口路径
      }).then(function (response) {
        console.log(response.data);
      })
      .catch(function (error) {
        console.log(error);
      })
      .then(function () {
        // always executed
    });
}

export default GetApiResults;

3. 重启React开发服务器

Create React App会自动加载代理配置,重启后请求会被转发到http://localhost:7071,浏览器不会触发CORS检查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:48:48