WebAPI與Signalr開發中的跨域要注意的細節
阿新 • • 發佈:2018-12-20
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{ };
map.RunSignalR(hubConfiguration);
});
上面這個程式碼塊中,引用動態庫為:Microsoft.Owin.Cors 和 Microsoft ASP.NET.WebAPI.Cors
有2個核心問題:
1.Owin 庫(構建專案自帶)有自己的跨域,而且優先順序非常高,會導致Microsoft.Owin.Cors無效
2.Microsoft.Owin.Cors 衝突於Web.config 的 Access-Control-Allow-Origin
程式碼正確方式:
1.Nuget 安裝 Microsoft ASP.NET.WebAPI.Cors
2. Nuget 安裝 Signalr
3.Nuget安裝 類庫 Microsoft.Owin.Cors
4.WebApiConfig 使用 config.EnableCors()
5.移除Web.config 中 httpProtocol 節點下的 Access-Control-Allow-Origin 相關內容
6.在跨域Conntroller中的類屬性中加入
[EnableCors("*", "*", "*")]
public class FireInfoController : ApiController
{
.....
}