2013-06-26 75 views
1

我試圖得到一個確認,是的,客戶端可以發送和接收消息到另一個域上的ASP.NET網站,而無需運行啓用SignalR的ASP.NET的IIS服務器支持CORS。SignalR跨域沒有CORS

有人可以提供一個例子,我可以看看哪裏的CORS 不是用作跨域機制?

我們有IE 9客戶端,並希望將不同域上的三個站點推送/拉到單個ASP.NET + SignalR服務器。這可以做到嗎?怎麼樣?

回答

1

如果cors不可用SignalR將longPolling傳輸與jsonp一起使用。

請記住jsonp的設計不安全,並且可能會限制您通過網絡發送的數據,因爲所有數據均通過查詢字符串發送。

您不應該在客戶端上提供SignalR使用jsonp的任何其他信息,它應該可以正常工作。

爲了確保跨域通信工作在服務器上,你就必須啓用它:

Routes.RouteTable.MapHubs(new HubConfiguration { EnableCrossDomain = true }); 
0

我想補充,WebSockets的(跨原點)將需要CORS,所以最終(如果你想使用網絡套接字),您將需要在服務器上支持此功能。

1

要使用SignalR 2.0與OWIN中間件而不是常規的ASP.NET管道時,啓用此功能,請安裝的NuGet的Microsoft.Owin.Cors包,然後做這樣的事情:

[assembly: OwinStartupAttribute(typeof(OwinStartup))] 

namespace Website.App_Start 
{ 
    public partial class OwinStartup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.Map("/signalr", map => 
      { 
       map.UseCors(CorsOptions.AllowAll); 
       map.RunSignalR(new HubConfiguration {EnableJSONP = true}); 
      } 
     } 
    } 
} 

更多細節在這裏:http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#crossdomain