跨域持久連接似乎做工精細,用這個例子來看:與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。謝謝! –