2

別のドメインからsignalRを呼び出そうとすると、次のエラーが発生し続けます。

XMLHttpRequestはlocalhost:62150 / signalr / negotiate?_=1362242757692をロードできません。Origin localhost:4982は、Access-Control-Allow-Originでは許可されていません。

これは私が実行しようとしているコードです:

$(function () {
    jQuery.support.cors = true;
    $.connection.hub.url = 'http://localhost:62150/signalr';
    $.connection.hub.start()
        .done(function () { alert("Now connected!"); })
        .fail(function () { alert("Could not Connect!"); });
});

jqueryとjquery.signalr.jsが読み込まれ、localhost:62150 / signalr / HubsがJSで応答し、localhost:62150 / signalr / Hubs / negotiate?_ = 1362243021215は、これをブラウザーで実行するとJSONを返します。無効なパスの問題。

私が試したこと:

そして、上記のすべての組み合わせ。

誰かが私が他に何を試すことができるか考えていますか?

サービングアプリはMVCとWebAPIの組み合わせです(違いはないと思います)。同じドメインからそのコードを試している場合、それは機能します。

4

2 に答える 2

5

1.0以降を使用している場合、サーバーでクロスドメインを有効にしましたか?(現在、デフォルトで無効になっています)

RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
于 2013-03-02T18:33:03.717 に答える
3

数時間を無駄にした後、私の経験を共有するのは良いことだと思います。

  1. Access-Control-Allow-Originをweb.configに追加しないでください(はい、追加することは決してありませんが、これは文字通り私が最初に行ったものであり、単純なjqueryクロスドメインアクセステストの後にそこに残しました

  2. RouteTable.Routes.MapHubs( new HubConfiguration() { EnableCrossDomain = true } );Hubを継承するクラスでは問題なく動作します

  3. RouteTable.Routes.MapConnection<MyConnection>( "foo", "/foo", new ConnectionConfiguration { EnableCrossDomain = true } );これは、PersistentConnectionを継承するクラスでも問題なく機能します

于 2013-07-10T19:52:00.537 に答える