.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、WithMethods、WithHeaders方法,
在這里可以添加多條策略,
2、啟用策略
在Configure(IApplicationBuilder app, IWebHostEnvironment env)方法中添加以下代碼,
app.UseCors("any");
括號中的"any"表示要啟用的策略名稱(第1步中定義的),
以上2步即可啟用跨域請求訪問,前端不需要做任何更改,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/26999.html
標籤:.NET Core
