Skip to content

跨域(CORS)

224 words
1 min
  • 浏览器安全性可防止网页向不处理网页的域发送请求。 此限制称为同域策略。 同域策略可防止恶意站点从另一站点读取敏感数据。

同源

配置

appsetting.json
json
 "Cors": {
    "Enabled": true,
    "CorsOrigins": "http://localhost:4200,http://localhost:4201"
  },

代码实现

csharp
public override void ConfigureServices(ServiceConfigurationContext context)
{
       context.Services.AddAbpProCors();
}

/// <summary>
/// 配置跨域
/// </summary>
public static IServiceCollection AddAbpProCors(this IServiceCollection service)
{
    var corsOptions = service.BuildServiceProvider().GetRequiredService<IOptions<AbpProCorsOptions>>().Value;
    if (!corsOptions.Enabled) return service;
    
    service.AddCors(options =>
    {
        options.AddPolicy(AbpProAspNetCoreConsts.DefaultCorsPolicyName, builder =>
        {
            builder
                .WithOrigins(
                    corsOptions.CorsOrigins
                        .Split(",", StringSplitOptions.RemoveEmptyEntries)
                        .Select(o => o.RemovePostFix("/"))
                        .ToArray()
                )
                //.WithAbpExposedHeaders()
                .SetIsOriginAllowedToAllowWildcardSubdomains()
                .AllowAnyHeader()
                .AllowAnyMethod()
                //.AllowCredentials()
                // https://www.cnblogs.com/JulianHuang/p/14225515.html
                // https://learn.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-7.0
                .SetPreflightMaxAge((TimeSpan.FromHours(24)));
        });
    });
    return service;
}

如有转载或 CV 的请标注本站原文地址