.NET Core 3.1 跨域請求 (CORS)


.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步即可啟用跨域請求訪問,前端不需要做任何更改。


免責聲明!

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



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