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就可以测试了

posted @ 2020-03-04 22:04  岳帅超  阅读(1184)  评论(0编辑  收藏  举报