一、在api配置文件Startup中定义全局变量:
//定义跨域请求字符串变量
readonly string MyCorsPolicy = "CorsPolicy";
二、在api的appsettings.json中添加配置信息(允许跨域访问的url):
"CorsPaths": {
"OriginOne": "http://localhost:5009", // 本地HTTP
"OriginOnes": "https://localhost:5009", // 本地HTTPS
"OriginThree": "http://www.mokexs.com:4559/", // 远程HTTP
"OriginThrees": "https://www.mokexs.com:4559/" // 远程HTTPS
},
三、NuGet包管理器,安装:Microsoft.AspNetCore.Mvc.Cors(使用Code3.1可以省略此步)
四、在api配置文件Startup中ConfigureServices方法里配置跨域处理cors:
方案1:
#region //跨域设置
services.AddCors(x =>
{
x.AddPolicy(MyCorsPolicy, y =>
{
//声明跨域策略:允许所有域,所有请求标头和全部的HTTP方法
y.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
});
});
#endregion
方案2:为了区别,定义跨域请求字符串变量名称有所改变
public readonly string anyAllowSpecificOrigins = "any";
//配置跨域处理cors
services.AddCors(options =>
{
options.AddPolicy(anyAllowSpecificOrigins, corsbuilder =>
{
var corsPath = Configuration.GetSection("CorsPaths").GetChildren().Select(p=>p.Value).ToArray();
corsbuilder.WithOrigins(corsPath)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();//指定处理cookie
});
});
五、在api配置文件Startup中Configure方法里添加app.UseCors(MyCorsPolicy):
app.UseCors(定义跨域请求字符串变量名称);
app.UseCors(MyCorsPolicy);//支持跨域:允许特定来源的主机访问
特别说明:此项必须在app.UseRouting()和app.UseEndpoints()之间,否则会报错。
六、在api配置文件Startup中Configure方法里app.UseEndpoints添加.RequireCors(MyCorsPolicy):
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers().RequireCors(MyCorsPolicy);
});
至此,配置完毕。欢迎各位批评指正!
需要跨域的时候使用此方法,无需跨域不需要添加,很多同学分不清楚什么是跨域,那就先阅读我之前写的文章