將 SignalR 集成到 ASP.NET Core api 程序的時候,按照官方 DEMO 配置完成,本地訪問沒有問題,但是發布之后一直報跨域問題,本地是這樣設置的:
原始代碼:
services.AddCors(op => { op.AddPolicy("cors", set => { set.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });
原因:
出現該問題的原因是由於 CORS 策略設置不正確造成的,原始設置我是允許所有 Origin 來源。但是由於 dotnetCore 2.2 的限制,無法使用 AllowAnyOrigin()
+ AllowCredentials()
的組合,只能顯式指定 Origin 來源,或者通過下述方式來間接實現。
解決問題:
services.AddCors(op => { op.AddPolicy("cors", set => { set.SetIsOriginAllowed(origin => true) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });