我想用Chrome實現與SignalR 1.0.1的跨域調用(Ver 25.0.1364.172)。因爲我在一臺主機(本地主機:16881)中擁有我的用戶界面,而在另一臺主機(本地主機:16901)中擁有「服務」。SignalR 1.0.1與Chrome的跨域請求(CORS)
我一切準備就緒爲主題How to use cross-domain connections (CORS - Access Control Allow Origin) with SignalR
add jQuery.support.cors = true; before opening a connection
set up $.connection.hub.url = 'http://localhost:16901/signalr';, pointing to your subdomain
allow cross-domain requests on server side, by adding the following header description:
<add name="Access-Control-Allow-Origin" value="http://localhost:16881" />
inside system.WebServer/httpProtocol/customHeaders section in Web.config file.
我也有HubConfiguration設置爲我的路由映射在Global.asax中的SignalR 1.0.1
RouteTable.Routes.MapHubs(new HubConfiguration()
{
EnableCrossDomain = true
});
一切看起來罰款IE10和FF22。但是在Chrome中,當SignalR嘗試進行握手時,它給了我一個錯誤。
XMLHttpRequest cannot load http://localhost:16901/signalr/negotiate?_=1363560032589. Origin http://localhost:16881 is not allowed by Access-Control-Allow-Origin.
我知道我可以通過使用--disable-web-security啓動它,但它確實不符合我的要求。請幫忙!
太棒了!它的工作!你知道爲什麼jQuery.support.cors = true並且Access-Control-Allow-Origin會導致Chrome的問題嗎? – Adamy 2013-03-18 00:01:30
我的猜測是你爲Access-Control-Allow-Origin設置了錯誤的東西,而且jQuery.support.cors = true。 – davidfowl 2013-03-18 03:46:41
將jQuery.support.cors設置爲true會禁用JSONP,因爲它會導致SignalR假定瀏覽器支持CORS。 – halter73 2013-03-18 04:29:52