Próbuję zaimplementować połączenia międzydomenowe za pomocą SignalR 1.0.1 z Chrome (wersja 25.0.1364.172). Ponieważ mam mój interfejs użytkownika na jednym hoście (localhost: 16881) i "usługa" na innym hoście (localhost: 16901).SignalR 1.0.1 Żądanie między domenami (CORS) z Chrome
mam wszystko na swoim miejscu, jak w temacie 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.
Mam też HubConfiguration ustanowiony dla mojego wyznaczaniu trasy w global.asax dla SignalR 1.0.1
RouteTable.Routes.MapHubs(new HubConfiguration()
{
EnableCrossDomain = true
});
wyglądem Everything dobrze w IE10 i FF22. Jednak w Chrome daje mi to przykrość, gdy SignalR próbuje wykonać handshake.
XMLHttpRequest cannot load http://localhost:16901/signalr/negotiate?_=1363560032589. Origin http://localhost:16881 is not allowed by Access-Control-Allow-Origin.
Wiem, że mogę go uruchomić w Chrome, uruchamiając go z opcją --disable-web-security, ale to naprawdę nie spełnia moich wymagań. Proszę pomóż!
Awesome! To działa! Czy wiesz, dlaczego jQuery.support.cors = true i Access-Control-Allow-Origin spowodowałoby problem w Chrome? – Adamy
Domyślam się, że ustawiłeś niewłaściwą rzecz dla Access-Control-Allow-Origin, i że jQuery.support.cors = true. – davidfowl
Ustawienie jQuery.support.cors na true powoduje wyłączenie JSONP, ponieważ powoduje, że SignalR przyjmuje, że przeglądarka obsługuje CORS. – halter73