跨域的SignalR:Access-Control-Allow-Origin不允许的错误

Evg*_*eni 2 asp.net-mvc signalr asp.net-web-api

尝试从另一个域调用signalR,并继续收到此错误:

XMLHttpRequest无法加载localhost:62150/signalr/negotiate?_ = 1362242757692.Access-Control-Allow-Origin不允许原始localhost:4982.

这是我正在尝试运行的代码:

$(function () {
    jQuery.support.cors = true;
    $.connection.hub.url = 'http://localhost:62150/signalr';
    $.connection.hub.start()
        .done(function () { alert("Now connected!"); })
        .fail(function () { alert("Could not Connect!"); });
});
Run Code Online (Sandbox Code Playgroud)

加载了jquery和jquery.signalr.js,localhost:62150/signalr/hubs用JS响应,localhost:62150/signalr/hubs/negotiate?_ = 1362243021215如果我在浏览器中运行它则返回JSON - 所以它不是一个缺少的脚本或路径问题无效.

我尝试过的:

以及所有上述的组合.

任何人都知道我还能尝试什么?

服务应用程序是MVC和WebAPI的组合(不要认为它有任何区别).如果我正在尝试来自同一个域的代码 - 它可以工作.

el_*_*one 5

如果您使用的是1.0或更高版本,您是否在服务器上启用了跨域?(现在默认禁用)

RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
Run Code Online (Sandbox Code Playgroud)

  • 以前的版本是预发布的,而SignalR 1.0是第一个RTM,所以这不是一个突破性的变化;-) (5认同)
  • 即使我有这行代码,我也得到了上面的错误.如果我使用RouteTable.Routes.MapHubs()代替,我将得到304.我的代码正在使用IE10和FF 20,但不适用于Chrome 25.0.1364.172.任何的想法? (2认同)