2012-11-26 78 views
1

我正在使用SignalR进行应用程序。SignalR IE9跨域请求不起作用

集线器放置在运行带有IIS 8的Windows Server 2012的一台服务器上。 http://mentor.cloudapp.net/mass/rexona/previa/signalr/hubs

客户端是在这里: http://massdeveloperstage.com/Rexona/Site/colombia/Previa/Match?matchId=6F318A29-3400-444B-95D9-7EC41A7AD2D4

的Signalr成立看起来像这样:

var match; 
    $(document).ready(function() { 
     $.connection.hub.loging = true; 
     match = $.connection.match; 

    match.client.addMessage = function (message) { 
     var vm = { 
      avatar: message.ProfileImageLocation, 
      content: message.Text, 
      user: message.UserScreenName, 
      obj: JSON.stringify(message) 
     }; 
     alert(vm.obj); 
    } 
    $.connection.hub.url = 'http://mentor.cloudapp.net/mass/rexona/previa/signalr'; 

    $.connection.hub.start().done(function() { 
     match.server.addToGroup("97-987-PP"); 
    }).fail(function() { 
      //alert("fail!"); 
    }); 

一切完美的作品在Chrome中,FF,Opera和在IE10,但使用IE9的时候访问它应用失败。

我错过了连接的设置?我是否需要在服务器上启用其他功能才能使用IE9?

谢谢。

+0

你有没有得到这个工作? – stricq

回答

1

我想你正在尝试做CORS(跨站点起源分享)。它不像IE9那样工作,查询this进行详细的讨论,并且microsoft page的确切限制。它与XDomainRequest自定义对象,而不是XMLHttpRequest的完成,...

  1. 目标URL必须使用HTTP或HTTPS
  2. 目标URL必须通过访问协议来访问只有HTTP方法GET和POST
  3. 没有自定义标头可以被添加到该请求
  4. 只有text/plain的是支持请求的Content-Type头(没有肥皂,JSON或编码的数据类型!)
  5. 没有认证或饼干将被发送请求
  6. 请求针对内网的网址只可从Intranet区域
  7. 的要求做出一定要有针对性的方案同样托管页面

编辑:我还没有实际使用过SignalR自己,这个答案一般基于CORS。根据@stricq的评论,IE需要长时间轮询才能与SignalR配合使用,如here中所述。

+0

我只是删除这一行:'jQuery.support.cors = true;'但IE9没有改变。任何其他想法? 谢谢你的时间。 – dnlgmzddr

+0

还提到了IE9的其他要求。这只会解决它,如果你已经遵循[所有其他要求](http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx )也是。例如JSON不受支持。 – eis

+0

我投降,因为这里没有关于如何让SignalR在IE9中工作的信息。这就是问题的具体内容。 – stricq