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

调用ASP.NET Core WebAPI登录端点时遇CORS预检请求头错误

解决方案

你的错误核心是:当请求携带凭据(withCredentials: true)时,CORS响应的Access-Control-Allow-Origin不能是通配符*,必须指定具体的源。下面是排查和解决步骤:

1. 修正CORS策略的注册方式

建议在服务注册阶段明确命名CORS策略,避免配置失效:

修改Program.cs中服务注册部分的AddCors代码:

services.AddCors(options =>
{
    options.AddPolicy("AllowTrustedOrigins", policy =>
    {
        policy.WithOrigins(
                "http://localhost:8100",
                "https://myAPP.azurewebsites.net",
                "https://API1.azurewebsites.net",
                "https://API2.azurewebsites.net",
                "https://www.myDomain.de"
            )
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials();
    });
});

然后在中间件部分引用这个策略:

// 替换原来的app.UseCors(...)代码
app.UseCors("AllowTrustedOrigins");

2. 确认中间件顺序正确

确保UseCors的位置符合ASP.NET Core的中间件执行顺序要求:

app.UseHttpsRedirection();

app.UseSwagger();
app.UseSwaggerUI(x => x.SwaggerEndpoint("/swagger/v1/swagger.json", ".NET Sign-up and Verification API"));

// UseCors必须放在UseMiddleware和MapControllers之前
app.UseCors("AllowTrustedOrigins");

app.UseMiddleware<ErrorHandlerMiddleware>();
app.UseMiddleware<JwtMiddleware>();

app.MapControllers();

3. 检查Azure App Service的CORS配置

这是最容易被忽略的点:如果你的API部署在Azure App Service,门户中的CORS设置会覆盖代码中的配置。

  • 登录Azure门户,找到你的API应用
  • 进入CORS设置页面
  • 取消勾选"允许所有来源"(不要设置*)
  • 手动添加你需要允许的源(和代码里的一致)
  • 保存设置后重启API应用

4. 验证预检请求响应

用浏览器开发者工具(F12)查看OPTIONS请求的响应头:

  • 确认Access-Control-Allow-Origin是你的前端域名(比如https://myAPP.azurewebsites.net)
  • 确认Access-Control-Allow-Credentials为true

如果响应头还是*,说明配置未生效,优先检查Azure的CORS设置是否覆盖了代码配置。

额外注意

  • 去掉不必要的SetIsOriginAllowedToAllowWildcardSubdomains(),你的源都是具体域名,不需要通配符子域名支持
  • 修复Program.cs中的笔误:builder.Services.Configure<MailSettings(builder.Configuration.GetSection(nameof(MailSettings))); 应改为builder.Services.Configure<MailSettings>(builder.Configuration.GetSection(nameof(MailSettings)));,避免其他潜在问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:17:17