7

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 で動作することはわかっていますが、実際には私の要件には合いません。助けてください!

4

2 に答える 2

11

必要な作業は次のとおりです。

  1. jQuery.support.cors = true を削除
  2. 削除する<add name="Access-Control-Allow-Origin" value="http://localhost:16881" />

その後、正常に動作するはずです。

于 2013-03-17T23:24:01.720 に答える