在用ajax進行請求服務器資源時若是協議+主機名+端口號 (如存在)相同則容許交互,不然會出現跨域問題,不能訪問和操做其餘域下的資源。經常使用解決方式有在前端使用jsonp和在後端啓用CORS。前端
jsonp能夠支持get請求,但不支持post請求。完美的解決方案仍是服務器端啓用CORS。在.NET Core 3.1 啓用CORS變得很是簡單,不須要像早期的.NET CORE版本須要手動安裝CORS程序包,只須要2步就能夠完成。ajax
一、添加策略json
打開服務器端項目的「Startup.cs」文件,找到ConfigureServices(IServiceCollection services)方法,添加以下代碼。c#
services.AddCors(options => { options.AddPolicy("any", builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader(); }); });
代碼表示在注入cors中間件:後端
「any」表示策略名稱,能夠隨便起,在第2步會用到;跨域
AllowAnyOrigin表示容許任何域;服務器
AllowAnyMethod表示容許任何方法;app
AllowAnyHeader表示容許任何消息頭。cors
若是是容許指定的域、方法、消息頭須要使用WithOrigins、WithMethod、WithMethod方法。post
在這裏能夠添加多條策略。
二、啓用策略
在Configure(IApplicationBuilder app, IWebHostEnvironment env)方法中添加如下代碼。
app.UseCors("any");
括號中的"any"表示要啓用的策略名稱(第1步中定義的)。
以上2步便可啓用跨域請求訪問,前端不須要作任何更改。