web-dev-qa-db-ja.com

SignalR Core 2.2 CORS AllowAnyOrigin()の重大な変更

OriginからSignalRを介してASP.NET Core 2.1サーバーに接続するには、次のようにパイプラインを構成する必要がありました。

app.UseCors (
  builder => builder
   .AllowAnyHeader ()
   .AllowAnyMethod ()
   .AllowAnyOrigin ()
   .AllowCredentials ()
)

this ドキュメントによると、ASP.NET Core 2.2ではAllowAnyOriginとAllowCredentialsの組み合わせが許可されなくなったので、どのような解決策がありますか?一方、SignalRコアは常にXMLHtppRequestでwithCredentials:trueを送信します。

私が必要なのは、どのOriginからでも、資格情報がなくても、ユーザーがSignalRハブに接続できることです。

13
Alexandre

回避策があります。AllowAnyOriginSetIsOriginAllowedに変更します。

app.UseCors(builder => builder
                .AllowAnyHeader()
                .AllowAnyMethod()
                .SetIsOriginAllowed(_ => true)
                .AllowCredentials()
            );
19
Alexandre

解決策を見つけました。次のコード部分を試すことができます。

.SetIsOriginAllowed (_ => true)

これでうまくいきました。

1
Ozgur Aslan

オリジンを渡す "WithOrigins"メソッドを使用できます。構成で読み取ることができます。

app.UseCors(builder => builder
            .AllowAnyHeader()
            .AllowAnyMethod()
            .WithOrigins(new string[] { "www.example1.com", "www.example2.com" })
            .AllowCredentials()
        );

渡された文字列が "*"のみの場合でも、signalRに問題があります。多くの文字列を渡し、そのうちの1つが "*"である場合、それは機能します。

0
Lorenzo Isidori