出现以下报错,则说明出现了跨域的问题:

配置跨域: ASP.NET Core 3.1 快速实现跨域访问_跨域

asp net core 3.X和2.X的跨域问题解决起来不一样。

asp net core后台针对跨域配置有过修改,因此在startup里面的cors的配置上面会有不同。

此文章的代码测试过3.1版本,其他版本没有测试。

以下是原文(红字有过修改):

内容纲要

​Startup​​ 中,添加一个变量

readonly string ganweiCosr = "AllowSpecificOrigins";

​Startup.ConfigureServices​​ 中,添加服务

services.AddCors(options =>
{
options.AddPolicy(ganweiCosr,
builder => builder.AllowAnyHeader()
.AllowAnyMethod()
.AllowAnyOrigin());
});

中间件中,有两处地方要修改​(但是经过测试下来,发现有部分代码的位置需要修改一下)

//路由
app.UseRouting();
//权限
app.UseAuthorization();
//跨域
app.UseCors(自己的跨域请求的定义);


app.UseEndpoints(endpoints =>
{
endpoints.MapControllers().RequireCors(自己的跨域请求的定义);
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
//endpoints.MapRazorPages();
});

经过验证:

使用跨域app.UseCors(ganweiCosr);这句话一定要写在app.UseAuthorization(); 后面,否则依旧会报错。


通过上面代码,即可实现全局跨域。

转载自:​​https://www.whuanle.cn/archives/812​


代码经过自己项目测试,可用。

配置跨域: ASP.NET Core 3.1 快速实现跨域访问_跨域_02

当然其他三个参数可以一根据自己的要求自己设定,比如header,我目前用不到put等方法,我就可以设置成以下的形式

services.AddCors(options =>
{
options.AddPolicy(自己的跨域请求的定义,
builder => builder.WithMethods("GET", "POST", "HEAD", "OPTIONS")
//.AllowAnyHeader()
.AllowAnyMethod()
//.AllowCredentials()
.AllowAnyOrigin());
});

//.WithMethods("GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS")