1

从这个例子来看,跨不同域的持久连接似乎工作正常:

http://jsfiddle.net/GSEJp

但是当我尝试改用“hubConnection”时,因为我的应用程序使用集线器而不是原始连接,浏览器会抱怨 CORS。在浏览器中打开 Javascript 控制台并运行这个小提琴:

http://jsfiddle.net/GSEJp/4/

即使我的 Global.asax 包含以下代码:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        this.Context.Response.AddHeader("Access-Control-Allow-Origin", "*");

        if (this.Context.Request.HttpMethod == "OPTIONS")
        {
            this.Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
            this.Context.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept");
            this.Context.Response.End();
        }
    }

那么有什么问题呢?仅仅是 hubConnections 在不同的域中不能很好地工作,还是我这边的问题?我应该提一下,我可以从本地 REST 客户端(邮递员)向同一个 MVC 应用程序运行正常的 XHR 请求,所以这对我来说应该没有什么问题。

谢谢!

编辑:

经过一番挖掘后,我发现在第一个 jsfiddle 中使用的信号器 js 文件具有此“xdomain”属性的定义。但是它没有“hubConnection”的定义,所以这就是我切换到query.signalR-0.5.3.js的原因。但是那个没有“xdomain”的定义。这可能就是我收到 CORS 错误的原因。

是否有同时支持 xdomain 和 hubConnection 的 signalr js 客户端版本?

再次感谢。

4

1 回答 1

0

正如 dfowler 在他的评论中所写,问题在于我使用的是旧版本的 SignalR。

阅读本文的其他人请注意:您需要在连接选项中设置 jsonp: true 才能使其正常工作。

于 2012-12-30T19:49:22.553 回答