.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步就能夠完成。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步便可啓用跨域請求訪問,前端不須要作任何更改。

相關文章
相關標籤/搜索