【问题标题】:Cross-domain SignalR does not work in IE<=9跨域 SignalR 在 IE<=9 中不起作用
【发布时间】:2013-02-09 17:08:50
【问题描述】:

我正在使用 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 在调试消息之后就死了。

有什么想法吗?

【问题讨论】:

  • 在jquery.signalr.1.0.0-rc2.js文件中的negotiate request的success和error handler中打断点,调用哪个,取值是多少?
  • @N.TaylorMullen :我再次检查了 IE10 和 IE9。使用 IE 进入成功分支,使用 IE9 进入错误分支。消息是“Zugriff verweigert”(拒绝访问)。错误在 jQuery-1.6.4 的第 7428 行抛出。就是这样:transport.send(requestHeaders, done);有什么想法吗?
  • 我假设 IE10 使用 WebSockets 传输,而 IE9 使用 LongPolling 对吗?
  • 您应该做的第一件事是更新到 1.0.0。听起来永远框架失败了。您可以使用重现项目和重现步骤提交错误吗?作为一种解决方法,您可以尝试在那些较旧的浏览器上强制进行长轮询,看看它是否有所作为。
  • @N.TaylorMullen 不,IE10 正在使用长轮询,因为我的服务器仍然是 .NET 4.0 并且还不支持 Websockets。 IE9 什么都没用,它失败了:)

标签: asp.net cross-domain signalr


【解决方案1】:

这就是请求失败的原因:IE9 jQuery AJAX with CORS returns "Access is denied"

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

对于 SignalR 1.0.0-rc2,它可以正常工作,但是对于 SignalR 1.0.0 及更高版本的所有版本,您需要在地图中心调用中启用跨域:SignalR cross domain not working on browsers other than IE10

【讨论】:

  • 赏金当之无愧,它解决了我的问题。我可以做一些脚本魔术来设置 jsonp 只有当我想的时候。
  • 但仍然让我感到惊讶的是:到目前为止还没有人在 IE9 中测试过跨域 SignalR 吗?为了确保您的网站保持响应速度,最好将您的 signalR 主机放在与您网站的其余部分不同的子域中...
  • 这肯定也让我感到困惑,这个问题值得更多调查。另一个可能被证明令人不安的是,如果在 localhost 中运行它仍然可以正常工作。因此,即使您的客户端位于 localhost:1111,服务器位于 localhost:2222,它也不会复制问题。我只能通过 app Harbor 托管服务器
  • 刚刚用正确/更合适的修复更新了这个答案。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 2019-08-05
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
相关资源
最近更新 更多