.net 跨域问题的基本配置方案:
- 设置允许所有来源,详情可以看官方文档。https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-6.0#cpo6,以下是基本实现:
在Startup.cs文件下的ConfigureServices方法添加
services.AddControllers();
services.AddRazorPages();
services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
});
在Startup.cs文件下的Configure方法添加 app.UseCors();,注意顺序,要在UseRouting后面,在UseAuthorization前面
app.UseRouting();
app.UseCors();
app.UseAuthorization();
- 设置部分url来源:
先在appsettings.json添加变量赋值要跨域的地址, “CorsUrls”: “” 在Startup.cs文件下的ConfigureServices方法添加
string corsUrls = Configuration["CorsUrls"];
if (string.IsNullOrEmpty(corsUrls))
{
throw new Exception("请配置跨请求的前端Url");
}
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins(corsUrls.Split(","))
//添加预检请求过期时间
.SetPreflightMaxAge(TimeSpan.FromSeconds(2520))
//如果不需要跨域请注释掉.AllowCredentials()或者增加跨域策略
.AllowCredentials()
.AllowAnyHeader().AllowAnyMethod();
});
});
在Startup.cs文件下的Configure方法添加 app.UseCors();,注意顺序,要在UseRouting后面,在UseAuthorization前面
app.UseRouting();
app.UseCors();
app.UseAuthorization();