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