从这个例子来看,不同域之间的持久连接似乎工作正常:
但是当我尝试使用“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客户端(Postman)向同一个MVC应用程序运行正常的XHR请求,所以我不应该有任何错误。
谢谢!
编辑:
经过一些挖掘后,我发现第一个jsfiddle中使用的signalr js文件有一个这个“xdomain”属性的定义。但它没有“hubConnection”的定义,所以这就是我切换到query.signalR-0.5.3.js的原因。但那个没有“xdomain”的定义。这可能就是我收到CORS错误的原因。
是否有支持xdomain和hubConnection的signalr js客户端版本?
再次感谢。
答案 0 :(得分:0)
dfowler在评论中写道,问题在于我使用的是旧版SignalR。
请注意阅读此内容的其他人:您需要在连接选项中设置jsonp:true才能使其正常工作。