Chrome で SignalR 1.0.1 (Ver 25.0.1364.172) を使用してクロスドメイン呼び出しを実装しようとしています。あるホスト (localhost:16881) に UI があり、別のホスト (localhost:16901) に「サービス」があるためです。
SignalR でクロスドメイン接続 (CORS - Access Control Allow Origin) を使用する方法のトピックのように、すべてが整っています。
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.
また、SignalR 1.0.1 の global.asax でルート マッピング用に HubConfiguration をセットアップしました。
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 を指定して Chrome を起動すると Chrome で動作することはわかっていますが、実際には私の要件には合いません。助けてください!