ASP.NET Core怎么配置跨域CORS ASP.NET Core启用CORS方法

来源:这里教程网 时间:2026-02-21 17:35:43 作者:

ASP.NET Core 配置跨域(CORS)很简单,关键是按顺序在 Program.cs 中注册服务并启用中间件,且策略名称要前后一致。

注册 CORS 服务

Program.cs 的顶部(

var builder = WebApplication.CreateBuilder(args);
之后),添加 CORS 服务:

AddCors()
注册服务,支持链式配置策略
推荐使用具名策略(Named Policy),便于后续引用和复用 示例:
builder.Services.AddCors(options =>
{
    options.AddPolicy("MyAllowAll", policy =>
    {
        policy.AllowAnyOrigin()
              .AllowAnyMethod()
              .AllowAnyHeader();
    });
});

启用 CORS 中间件

var app = builder.Build();
之后、
app.Run();
之前,调用
UseCors()
启用中间件:

必须放在
UseRouting()
之后、
UseAuthorization()
UseEndpoints()
之前
传入的策略名必须和
AddPolicy()
中定义的一致
示例:
app.UseRouting();
app.UseCors("MyAllowAll"); // 注意:这里必须匹配策略名
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();

按需应用到控制器或方法

如果不想全局启用,可以只对特定控制器或 Action 启用 CORS:

在 Controller 类上加
[EnableCors("MyAllowAll")]
或在某个 Action 方法上加同样特性 若同时在类和方法上标注,方法上的会覆盖类上的 示例:
[ApiController]
[Route("api/[controller]")]
[EnableCors("MyAllowAll")]
public class ValuesController : ControllerBase
{
    [HttpGet]
    public IActionResult Get() => Ok(new[] { "a", "b" });
}

生产环境注意安全细节

开发时用

AllowAnyOrigin()
很方便,但上线前务必收紧:

避免使用
AllowAnyOrigin()
+
AllowCredentials()
组合(浏览器会拒绝)
如需带凭据(如 Cookie),改用
WithOrigins("https://yourdomain.com")
明确指定允许的 Header 和 Method,例如
WithHeaders("Content-Type", "X-Custom-Header")
可为不同场景定义多个策略(如 "ApiPolicy"、"ClientPolicy")

基本上就这些。顺序、命名、位置三者对了,CORS 就能正常工作。

相关推荐