2012-03-17 75 views
8

我試圖獲得跨域工作的基本示例,但我無法讓它正常工作。根據https://github.com/SignalR/SignalR/issues/6這個人的說法,他通過添加一個Access-Control-Allow-Origin標題來實現它的工作。跨域的SignalR

基本上,我已經爲mvc 3應用程序添加了一個集線器,在web.config中添加了上述標題,並創建了一個發送消息的頁面。這個設置工作正常。 接下來,我創建了使用頁面上的相同客戶端的JavaScript不同的Web應用程序,但是URL設置爲使用不同的服務器:

$.connection.hub.url = 'http://www.myserver.com/signalr'; 

只要我用它停止工作遠程URL。

如何讓SignalR跨域工作?

更新: 一些額外的信息,上面的方法也適用於Chrome和Firefox,但IE9不會喜歡它......

+0

您正在測試哪個瀏覽器?並非所有瀏覽器都支持'Access-Control-Allow-Origin'標頭。 – 2012-03-18 10:32:48

+0

我一直在使用IE9和Chrome – 2012-03-18 14:16:34

回答

9

我得到它的工作使用一個簡單的測試項目和Internet Explorer 9,但那一點都不不容易,首先我掛在你描述的同樣的問題上。我認爲你幾乎在那裏,你只是在你的JavaScript中缺少以下行:

jQuery.support.cors = true; 

它告訴jQuery做跨域調用。看起來很簡單,但真的很難找到;-)

我解釋一切我在blog post做的步驟,因爲我沒有找到關於這個主題的現有信息爲止。

如果還有其他問題,告訴我。我有一個在Internet Explorer 9中運行的工作測試項目,我可以向您發送。

+0

謝謝,它的工作!它確實在永遠幀的背景中拋出一個拒絕訪問異常(var $ = window.parent.jQuery),並且用戶得到一個彈出消息以允許cors,但它發送並接收消息! – 2012-03-30 05:46:13

+0

奇怪的是,我沒有得到任何彈出消息...這是在IE或其他瀏覽器?很高興它的工作原理:-) – aKzenT 2012-03-30 10:15:28

+0

這確實在IE9中。我希望他們很快就能在SignalR中獲得正式的跨域支持:) – 2012-03-31 07:14:48