我試圖得到一個確認,是的,客戶端可以發送和接收消息到另一個域上的ASP.NET網站,而無需運行啓用SignalR的ASP.NET的IIS服務器支持CORS。SignalR跨域沒有CORS
有人可以提供一個例子,我可以看看哪裏的CORS 不是用作跨域機制?
我們有IE 9客戶端,並希望將不同域上的三個站點推送/拉到單個ASP.NET + SignalR服務器。這可以做到嗎?怎麼樣?
我試圖得到一個確認,是的,客戶端可以發送和接收消息到另一個域上的ASP.NET網站,而無需運行啓用SignalR的ASP.NET的IIS服務器支持CORS。SignalR跨域沒有CORS
有人可以提供一個例子,我可以看看哪裏的CORS 不是用作跨域機制?
我們有IE 9客戶端,並希望將不同域上的三個站點推送/拉到單個ASP.NET + SignalR服務器。這可以做到嗎?怎麼樣?
如果cors不可用SignalR將longPolling傳輸與jsonp一起使用。
請記住jsonp的設計不安全,並且可能會限制您通過網絡發送的數據,因爲所有數據均通過查詢字符串發送。
您不應該在客戶端上提供SignalR使用jsonp的任何其他信息,它應該可以正常工作。
爲了確保跨域通信工作在服務器上,你就必須啓用它:
Routes.RouteTable.MapHubs(new HubConfiguration { EnableCrossDomain = true });
我想補充,WebSockets的(跨原點)將需要CORS,所以最終(如果你想使用網絡套接字),您將需要在服務器上支持此功能。
要使用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