1

我正在使用 SignalR-1.0.0-rc2。我正在使用跨域 SignalR,因为移动设备上的某些浏览器仍然只允许每个域有两个连接。所以我有一个 SignalR 域和一个网络域。服务器端,它们都是一样的。

我的实现适用于 Opera、Firefox、Chrome、Safari 和 IE10。它不适用于 IE9、IE8 和 IE7。

jQuery.support.cors = true;
var connection = $.connection.globalHub;
$.connection.hub.url = SignalRDomain;
$.connection.hub.logging = true;
$.connection.hub.qs = "UserID="+UserID+"&Login="+UserLogin+"&UserHash="+UserHash;

connection.client.MyLocalFunction = function () {
    // do something
}

$.connection.hub.start();

我已经打开了日志记录。IE9/8/7 控制台向我显示了两条 SignalR 跟踪消息:[13:54:37 UTC+0100] SignalR:自动检测到的跨域 URL。[13:54:37 UTC+0100] SignalR:正在与“ http://live.mydomain.de/signalr/negotiate ”协商。

如果我查看调试器的“网络”选项卡,我看不到任何对服务器的调用。所以看起来 SignalR 在调试消息之后就死了。

有任何想法吗?

4

1 回答 1

3

所以这就是请求失败的原因:带有CORS的IE9 jQuery AJAX返回“访问被拒绝”

您可以通过删除“jQuery.support.cors = true”行来解决此问题。

对于 SignalR 1.0.0-rc2,它可以正常工作,但是对于 SignalR 1.0.0 及更高版本的所有版本,您需要在地图中心调用中启用跨域:SignalR 跨域在 IE10 以外的浏览器上不起作用

于 2013-03-01T20:25:39.087 回答