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

ASP.NET Core 8 Web API与Angular 18前端CORS跨域问题求助

解决ASP.NET Core 8 Web API发布后部分接口CORS报错问题

问题分析

本地环境下所有接口正常,但发布后/authenticate/login接口返回CORS错误,提示缺少Access-Control-Allow-Origin头,而其他接口(如音频转换接口)正常。核心原因是ASP.NET Core中间件顺序配置错误,导致CORS中间件没有在请求处理前正确注入响应头。

你的Program.cs中存在两个关键顺序问题:

  • UseCors放在了MapControllers之后,导致路由匹配并处理请求时,CORS中间件还未执行,无法添加必要的响应头。
  • UseHttpsRedirection、UseAuthentication等核心中间件放在了MapControllers之后,违背ASP.NET Core中间件的执行顺序规则。

修复步骤

调整中间件顺序,确保UseCors在所有请求处理相关中间件之前执行,正确代码如下:

builder.Services.AddScoped<JwtSecurityTokenHandlerWrapper>();
builder.Services.AddControllersWithViews(options => {
    options.Filters.Add(typeof(JwtAuthorizeFilter));
});

builder.Services.AddCors(options => {
    options.AddPolicy("AllowSpecificOrigin",
        builder => builder
            .WithOrigins("https://*.brokenholiday.online", "http://localhost:4200")
            .SetIsOriginAllowedToAllowWildcardSubdomains()
            .AllowAnyHeader()
            .AllowAnyMethod()
            .AllowCredentials());
});
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// 先启用HTTPS重定向
app.UseHttpsRedirection();

// CORS中间件必须在认证、授权和路由映射之前执行
app.UseCors("AllowSpecificOrigin");

// 认证中间件
app.UseAuthentication();

// 授权中间件
app.UseAuthorization();

// JWT中间件若处理认证逻辑,需放在UseAuthentication之后
app.UseMiddleware<JwtMiddleware>();

// 最后映射控制器路由
app.MapControllers();

app.Run();

额外排查点

  • JwtMiddleware拦截问题:确认JwtMiddleware是否会对未携带Token的登录请求提前终止响应,导致CORS头无法添加。如果登录接口不需要JWT验证,可在中间件中排除该路由:
    public async Task InvokeAsync(HttpContext context)
    {
        // 跳过登录接口的JWT验证
        if (context.Request.Path.StartsWithSegments("/authenticate/login"))
        {
            await _next(context);
            return;
        }
        // 其他JWT验证逻辑...
    }
    
  • 部署环境冲突:若使用IIS或反向代理,检查服务器层面是否配置了CORS规则,避免与代码中的配置冲突。
  • 路由匹配问题:确认登录接口的路由配置正确,不存在路由优先级导致请求未到达CORS中间件的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:57:14