NET Core 3.1 API项目 Cors跨域
1、配置 CORS 跨域
在Startup 的 ConfigureServices中添加
#region CORS //跨域第一种方法,先注入服务,声明策略,然后再下边app中配置开启中间件 services.AddCors(c => { //一般采用这种方法 c.AddPolicy("LimitRequests", policy => { policy .WithOrigins("http://127.0.0.1:1818", "http://localhost:8080", "http://localhost:8021", "http://localhost:8081", "http://localhost:1818")//支持多个域名端口,注意端口号后不要带/斜杆:比如localhost:8000/,是错的 .AllowAnyHeader()//Ensures that the policy allows any header. .AllowAnyMethod(); }); }); #endregion
2、启动中间件
在Startup 的Configure 配置方法里,添加启用Cors中间件服务
#region Cors 跨域配置 app.UseCors("LimitRequests"); // 跳转https 有Https时使用 //app.UseHttpsRedirection(); //使用静态文件 app.UseStaticFiles(); //使用cookie app.UseCookiePolicy(); // 返回错误码 app.UseStatusCodePages();//把错误码返回前台,比如是404 #endregion
注意:如果你使用了 app.UserMvc() 或者 app.UseHttpsRedirection()这类的中间件,一定要把 app.UseCors() 写在它们的上边,先进行跨域,再进行 Http 请求,否则会提示跨域失败。
因为这两个都是涉及到 Http请求的,如果你不跨域就直接转发或者mvc,那肯定报错。
3、ajax请求 两种方法都行
$.get("/api/Login/Token", function (data, status) { console.log(data); $("#status-cors").html("状态: " + status); $("#data-cors").html("数据: " + data? data.token:"失败"); });
let postdata = { "bID": 10 }; $.ajax({ type: 'post', url: '/api/Values', contentType: 'application/json', data: JSON.stringify(postdata), success: function (data, status) { console.log(data); $("#status-cors-post").html("状态: " + status); $("#data-cors-post").html("数据: " + JSON.stringify(data)); } });
发布到IIS就可以测试了