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