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

如何解决React对接ASP.NET Core Web API时出现的本地CORS跨域错误

问题根因

你的问题核心是Windows身份验证默认拦截了无凭证的CORS预检OPTIONS请求,导致请求根本没有走到你配置的CORS中间件,自然返回的响应头里没有Access-Control-Allow-Credentials: true,所以触发CORS报错。服务器端部署正常是因为服务器IIS已经做了对应配置,本地IIS Express/Kestrel默认没有适配这个场景。


解决方案

  • 第一步:开启本地运行时的匿名身份验证
    打开项目Properties文件夹下的launchSettings.json,修改iisExpress配置项,同时开启Windows认证和匿名认证:

    "iisExpress": {
      "windowsAuthentication": true,
      "anonymousAuthentication": true,
      "applicationUrl": "https://localhost:44376;http://localhost:5000",
      "sslPort": 44376
    }
    
  • 第二步:配置授权策略,保证非OPTIONS请求必须通过身份验证
    在Startup.cs的ConfigureServices方法中添加如下配置,避免匿名认证开启后接口被未授权访问:

    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Server.IISIntegration;
    
    // 省略其他已有代码
    public void ConfigureServices(IServiceCollection services)
    {
        // 原有DbContext、Scoped注入等代码保留
        
        // 添加Windows身份验证
        services.AddAuthentication(IISDefaults.AuthenticationScheme);
        
        // 配置全局授权策略:所有请求默认需要认证
        services.AddAuthorization(options =>
        {
            options.FallbackPolicy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
        });
        
        // 原有AddControllers、AddCors代码保留
    }
    
  • 第三步:修正axios配置的笔误
    你当前axios配置中Accept字段拼写错误,将applicaiton/json改为application/json,避免不必要的请求异常。

  • 可选:如果你使用Kestrel直接运行而非IIS Express,需要在构建Host时开启Windows认证,修改Program.cs:

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>()
                          // 开启Kestrel的Windows身份验证
                          .UseWindowsAuthentication();
            });
    

你原有的CORS配置顺序(UseRouting→UseCors→UseAuthorization)是正确的,不需要调整。修改完成后重启本地API服务即可正常发起POST请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:45:03