SignalR IE9跨域请求不起作用

时间:2012-11-26 21:24:11

标签: signalr signalr-hub

我正在使用SignalR制作应用程序。

Hub放置在运行带有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?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为您正在尝试在那里进行CORS(跨站点源共享)。它与IE9的效果不同,请查看this进行详细讨论,并microsoft page查看确切的限制。它是使用XDomainRequest自定义对象而不是XMLHttpRequest完成的,并且......

  1. 必须使用HTTP或HTTPS协议访问目标URL
  2. 必须仅使用HTTP方法GET和POST
  3. 访问目标URL
  4. 不能在请求中添加自定义标头
  5. 请求的Content-Type标头仅支持text / plain(没有soap,json或编码数据类型!)
  6. 不会随请求一起发送身份验证或Cookie
  7. 针对Intranet URL的请求只能来自Intranet区域
  8. 请求必须定位到与托管页面相同的方案
  9. 编辑:我自己实际上并没有使用过SignalR,这个答案基于CORS。根据@stricq的评论,IE需要长时间轮询才能使用SignalR,如here中所述。