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

.NET 6.0中CORS配置无效,如何解决跨域请求阻塞问题?

.NET 6.0 CORS请求失败问题排查

运行.NET 6.0应用时,调用API出现CORS错误,以下是Program.cs的配置代码:

var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

builder.Services.AddCors(options =>
{
    options.AddPolicy(MyAllowSpecificOrigins,
        policy =>
        {
            policy.WithOrigins("https://localhost:3000",
                                "https://example.com")
                                .AllowAnyHeader()
                                .AllowAnyMethod();
        });
});

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "JWTAuthDemo v1"));
}

using (var scope = app.Services.CreateScope())
{
    var dataContext = scope.ServiceProvider.GetRequiredService<MySiteContext>();
    dataContext.Database.Migrate();
}
app.UseHttpsRedirection();

app.UseCors(MyAllowSpecificOrigins);

app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

app.Run();

报错信息:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://localhost:5184/api/Meal/tags. (Reason: CORS request did not succeed). Status code: (null).

可能的原因及解决办法

  • 中间件顺序确认:你的UseCors位置是正确的(在UseHttpsRedirection之后,UseAuthentication/UseAuthorization之前),但要确保没有自定义中间件在UseCors之前拦截了OPTIONS预检请求,这类请求是CORS验证的关键。

  • 源地址匹配问题:检查前端实际发起请求的源地址,是否和WithOrigins中配置的完全一致——协议(http/https)、域名、端口都不能错。比如如果前端实际是http://localhost:3000但你配置的是https,就会匹配失败。

  • HTTPS证书问题:报错中状态码为null,大概率是浏览器不信任后端的HTTPS证书(比如localhost自签名证书),导致请求无法建立连接,进而触发CORS错误。解决办法是在浏览器中信任该证书,或者开发环境临时改用HTTP测试。

  • 预检请求处理问题:如果后端有全局拦截器或路由限制,可能阻止了OPTIONS请求的正常返回。可以直接在浏览器开发者工具中查看OPTIONS请求的返回情况,确认是否收到正确的CORS响应头。

  • 临时测试策略:开发环境可以临时将CORS策略改为允许所有源,验证是否是源配置的问题:

    options.AddPolicy(MyAllowSpecificOrigins,
        policy =>
        {
            policy.AllowAnyOrigin()
                  .AllowAnyHeader()
                  .AllowAnyMethod();
        });
    

    如果修改后请求正常,再回到源地址匹配的排查,确认前端实际请求源是否符合配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:55:32