注:他の誰かが最初にこの質問をしましたが、回答を投稿する前に削除しました. この質問には、SignalR をクロスドメインで機能させようとするときに開発者が直面する多くの問題が含まれているため、私はそれを再現することにしました。さらに、私はすでに答えを書き終えていました!
ASP.NET MVC .NET Framework 4 プロジェクトで SignalR 1.0.1 サーバーを実行しています。別のドメイン (別の localhost ポート) に別の ASP.NET アプリケーションがあり、JavaScript クライアント経由で接続しようとしています。アプリケーションが接続しようとすると、次のようになります。
XMLHttpRequest cannot load http://localhost:31865/api/negotiate?_=1363105027533.
Origin http://localhost:64296 is not allowed by Access-Control-Allow-Origin.
すべての手順に従って、SignalR でクロスドメイン サポートを有効にしましたが、何が欠けていますか?
jQuery.support.cors = true;
$.connection('http://localhost:31865/api', '', false, { jsonp: true, xdomain: true });
RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
RouteTable.Routes.MapConnection<ApiConnection>("/api", "api");
また、API プロジェクトの Web.config に以下を追加しました。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
ハブではなく、SignalR サーバーに PersistentConnection を使用しています。
何か案は?