1. 程式人生 > >WebAPI與Signalr開發中的跨域要注意的細節

WebAPI與Signalr開發中的跨域要注意的細節

            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
    {
      .....
    }