【ASP.NET Core】Asp.Net Core 处理跨域请求

  • 跨域请求

    asp.net core中配置跨域请求需要

public void ConfigureServices(IServiceCollection services)
{
                //配置跨域处理
            services.AddCors(options =>
            {
                //获取存储于配置文件中允许的Origin列表
                string[] allowOrigins = Configuration.GetSection("AllowOrigins").Get<string[]>(); 
                //添加默认跨域规则
                options.AddDefaultPolicy(PolicyBuilder(allowOrigins));
                //其他允许跨域的指定origins
                allowOrigins = new string[]{"http://other.origins"};
                //添加名为PolicyName的跨域规则,使用时需要在控制器上添加EnableCors("PolicyName"), 同时默认跨域规则仍有效
                options.AddPolicy("PolicyName", PolicyBuilder(allowOrigins));
            });
            // Get the default cors policy; 通过指定Origins列表构建包含指定Methods的Cors Policy
            static CorsPolicy PolicyBuilder(string[] allowOrigins) => new CorsPolicyBuilder(allowOrigins)
                    //允许的HTTP Methods集合
                    .WithMethods(ResponseHelper.AllowedMethodArray)
                    .AllowAnyHeader()
                    .AllowCredentials()
                    //构建CorsPolicy
                    .Build();
}

特殊说明:使用AllowAnyOriginsAllowCredential同时出现是一种不安全的行为,官方出于安全考虑禁用了这一组合, ref: Microsoft 官方文档

posted @ 2021-02-03 17:27  wolfife  阅读(109)  评论(0)    收藏  举报