从这个例子来看,跨不同域的持久连接似乎工作正常:
但是当我尝试改用“hubConnection”时,因为我的应用程序使用集线器而不是原始连接,浏览器会抱怨 CORS。在浏览器中打开 Javascript 控制台并运行这个小提琴:
即使我的 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 客户端版本?
再次感谢。