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就可以測試了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM