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

.NET Core 5.0 WebAPI跨域调用出现CORS错误该如何解决?

.NET Core 5.0 WebAPI CORS错误解决方案

问题核心原因排查与修复

    1. 修复前端Ajax请求代码
      前端请求头中不能添加Access-Control-Allow-Origin字段,该字段属于服务端响应头,前端主动添加会被识别为自定义请求头,触发CORS预检规则校验失败,直接删除该行即可:
    $.ajax({
                async: true,
                url: "https://localhost:44385/AuctionDetails/GetAllAuctions",
                type: "GET",
                crossDomain: true,
                dataType: "JSON",
                headers: {
                    "Authorization": 'Bearer ' + '@Session["USRT_TOKEN"]'
                    // 删除Access-Control-Allow-Origin配置行
                },
                // 剩余业务代码保持不变
            });
    
    1. 补全后端CORS服务配置
      你当前的CORS配置仅开放了源访问权限,未开放请求头和请求方法的访问权限,你的请求携带了自定义Authorization头,需要额外配置允许任意头和任意方法:
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddCors(options => options.AddDefaultPolicy(
            builder => builder.AllowAnyOrigin()
                              .AllowAnyHeader() // 新增:允许所有请求头
                              .AllowAnyMethod() // 新增:允许所有请求方法
                              ));
        services.AddControllers();
    }
    

    如果后续接口需要支持Cookie凭证传递,需将AllowAnyOrigin()替换为WithOrigins("https://localhost:44341"),并追加AllowCredentials()配置。

    1. 确认中间件管道顺序严格正确
      UseCors必须放置在UseRouting之后,UseAuthentication、UseAuthorization之前,完整顺序参考:
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
    
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        
        // CORS中间件必须放在此处
        app.UseCors();
    
        app.UseAuthentication();
        app.UseAuthorization();
    
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapControllers();
        });
    }
    
    1. 异常场景排查
      如果接口返回非200状态码(比如401、500),错误处理中间件可能会清空响应头导致CORS头丢失,需确保错误处理中间件放置在UseCors之后,或者自定义异常返回逻辑时保留CORS相关响应头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:54:03