.net core3.1 如何設置跨域
最近在做服務端的消息推送,因為業務比較簡單、並發很低,所以選擇使用SignaIR來做服務端推送。
於是上網找了一下微軟的文檔,發現和之前的版本有些許改變
//不支持同時設置這四個全允許 app.UseCors(t=> { t.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials(); });
然后就是位置一定要放對,
app.UseRouting(); // 設置跨域 app.UseCors(MyAllowSpecificOrigins); app.UseHttpsRedirection();
一定要放在 UseRouting() 和 UseHttpsRedirection() 之間,否則會失效。
SignalR如何設置跨域
本來以為設置了全局跨域之后就可以了,但是在使用過程中,發現當服務端和客戶端不在用一個域的時候,會連接不上,根據報錯信息,知道原因是跨域的問題,但是在start.cs文件中已經設置過全局跨域了,找了很久找不到原因,網上的所有資料都是設置全局跨域即可,但是實際操作不得行。
然后發現SignaIR的跨域需要單獨配置,
app.UseEndpoints(endpoints => { //推送服務 endpoints.MapHub<PushHub>("/PushHubs").RequireCors(t=>t.WithOrigins(new string[]{ "null"}).AllowAnyMethod().AllowAnyHeader().AllowCredentials()); });
這樣的話就可以通過域是null的請求來連接服務器了,對應的允許的域可以自己配置。
