2016-04-14 8 views
6

WebAPIサービス内に存在するシンプルなSignalRハブを構築しました.WebAPIとSignalRの両方に必要なすべてのCORS属性が含まれています。私のWebAPIエンドポイントはすべて期待どおりに機能していますが、SignalRはそうではありません。SignalRレスポンスの上書きヘッダ

私は考えることができ、私はオンラインで見つけることができますが、何も動作しませんでした、私はすでにthis answerthis otherを解決しませんでした。

XMLHttpRequest cannot load https://MyApplicationServer/notifications/signalr/negotiate?clientProtocol=1.5&access_token= &connectionData=. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'MyOriginService' is therefore not allowed access. The credentials mode of an XMLHttpRequest is controlled by the withCredentials attribute.

答えて

13

問題のサーバー側についてさらに調査した後、私はthis answerに遭遇し、要求のクライアント側であることがわかりました。 this GitHub issueによれば、要求の「withCredentials」パラメータは常に「true」に設定されます。解決策は、次のようにクライアント上でstartメソッドを呼び出すことだった:

$.connection.hub.start({ withCredentials: false }).done(function() { //... } 
0

は以下のとおりです。

マイSignalRの拡張メソッドは、この

public static IAppBuilder UseSignalrNotificationService(this IAppBuilder app) 
    { 
     var config = new HubConfiguration(); 
     config.Resolver = new HubDependencyResolver(); 
     config.EnableDetailedErrors = true; 
     app.UseCors(CorsOptions.AllowAll); 
     app.MapSignalR(config); 

     return app; 
    } 

のように見え、私もWeb.configファイルを使用して、すべての要求に応答ヘッダを追加してみましたが、私はオールウェイズ同じエラーを取得し

何らかの種類のグローバル・インターセプターで要求をどこかで変更していますか?なんらかの理由で、XMLHttpRequestは withCredentials:trueで始まり、 Access-Control-Allow-Originが*に設定されている場合、これは禁止されています。

「アクセス制御許可元」を「http://MyApplicationServer」に設定するとどうなりますか? *よりも安全で、ソースで問題を取り除きます。

+0

私は奇妙な何かが要求し、そのヘッダで起こって、結果なしに起源を指定するSignalRのCORSポリシーを変更してみました – evilpilaf

関連する問題