出现以下报错,则说明出现了跨域的问题:
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
代码经过自己项目测试,可用。
当然其他三个参数可以一根据自己的要求自己设定,比如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")