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

.NET 6 Core API如何从appsettings.json配置多源CORS?

.NET 6 Core API 便捷管理多前端CORS配置的方法

方法一:直接读取逗号分隔的配置(快速实现)

先在appsettings.json(或对应环境的配置文件,如appsettings.Production.json)中配置逗号分隔的前端地址:

{
  "AllowedOrigins": "https://frontend1.com,https://frontend2.com,https://localhost:3000"
}

然后在Program.cs中读取并配置CORS:

var builder = WebApplication.CreateBuilder(args);

// 读取配置并处理分割,自动去除空项和首尾空格
var allowedOrigins = builder.Configuration["AllowedOrigins"]?
    .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) 
    ?? Array.Empty<string>();

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowMultipleOrigins", policy =>
    {
        policy.WithOrigins(allowedOrigins)
              .AllowAnyHeader()
              .AllowAnyMethod();
        // 若需要允许带凭证的请求,添加 .AllowCredentials()
    });
});

// 注意:CORS中间件必须放在路由、授权等中间件之前
var app = builder.Build();
app.UseCors("AllowMultipleOrigins");

// 后续中间件配置(如app.UseAuthorization()、app.MapControllers()等)
app.Run();

方法二:强类型配置绑定(生产环境推荐)

这种方式更规范,支持配置验证,也避免逗号分割的潜在问题:

  1. 创建配置类:
public class CorsSettings
{
    public List<string> AllowedOrigins { get; set; } = new List<string>();
}
  1. 修改appsettings.json为数组格式:
{
  "CorsSettings": {
    "AllowedOrigins": [
      "https://frontend1.com",
      "https://frontend2.com",
      "https://localhost:3000"
    ]
  }
}
  1. 在Program.cs中绑定配置并设置CORS:
var builder = WebApplication.CreateBuilder(args);

// 绑定配置到强类型类
var corsSettings = builder.Configuration.GetSection("CorsSettings")
    .Get<CorsSettings>() ?? new CorsSettings();

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowMultipleOrigins", policy =>
    {
        policy.WithOrigins(corsSettings.AllowedOrigins.ToArray())
              .AllowAnyHeader()
              .AllowAnyMethod();
    });
});

// 可选:将配置类注册到DI容器,方便其他服务使用
builder.Services.Configure<CorsSettings>(builder.Configuration.GetSection("CorsSettings"));

var app = builder.Build();
app.UseCors("AllowMultipleOrigins");

// 后续中间件配置
app.Run();

关键注意事项

  • 前端地址必须完整包含http://或https://,仅写域名会导致CORS策略不生效
  • 生产环境可通过环境变量覆盖配置(如Docker环境变量、云服务配置项),无需修改配置文件
  • 若需动态更新CORS源(不重启服务),可自定义ICorsPolicyProvider实现,但常规场景上述两种方法足够满足需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:36:23