.net core3.1 如何設置跨域、SignalR如何設置跨域


.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的請求來連接服務器了,對應的允許的域可以自己配置。

 


免責聲明!

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



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