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

ASP.NET Web API跨域请求报错:缺少Access-Control-Allow-Origin头

解决ASP.NET Web API跨域CORS报错问题

核心问题:中间件顺序错误

你的代码里app.UseCors的位置不符合ASP.NET中间件的执行规则,CORS中间件必须在授权中间件之前、路由映射之前运行,否则无法正确添加CORS响应头,导致跨域报错。

修正后的Program.cs代码

global using webapi.Models;

var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

var builder = WebApplication.CreateBuilder(args);

// 注册服务
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddDbContext<PhdevContext>();

// CORS策略配置
builder.Services.AddCors(options =>
{
    options.AddPolicy(name: MyAllowSpecificOrigins,
                      policy =>
                      {
                          policy.WithOrigins("https://localhost:7036")
                              .AllowAnyHeader()
                              .AllowAnyMethod();
                      });
});

var app = builder.Build();

// 开发环境Swagger配置
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

// 关键:CORS中间件必须放在UseAuthorization之前
app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();

app.MapControllers();

app.Run();

额外排查要点

  • 核对前端实际运行地址:确认前端的协议、域名、端口和你CORS策略里配置的https://localhost:7036完全一致,比如React默认运行端口是3000,若前端用的是这个端口,需要同步修改CORS配置。
  • 若前端请求需要携带Cookie或认证信息,需在CORS策略中添加.AllowCredentials(),同时前端请求要设置credentials: 'include'。
  • 检查是否有自定义中间件提前拦截了请求,导致CORS响应头未被正常添加。
  • 用浏览器开发者工具的网络面板查看请求响应头,确认是否存在Access-Control-Allow-Origin字段,以此验证CORS策略是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:18:20