跨域持久连接似乎做工精细,用这个例子来看:与signalR跨域hubConnection
但是当我尝试使用“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客户端的版本?
再次感谢。
您使用的是SignalR的错误版本。使用最新的(1.0 rc1)。 CORS头被自动添加。 – davidfowl
啊,我甚至不知道有1.0。谢谢! –