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ハブに接続できることです。
回避策があります。AllowAnyOrigin
をSetIsOriginAllowed
に変更します。
app.UseCors(builder => builder
.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed(_ => true)
.AllowCredentials()
);
解決策を見つけました。次のコード部分を試すことができます。
.SetIsOriginAllowed (_ => true)
これでうまくいきました。
オリジンを渡す "WithOrigins"メソッドを使用できます。構成で読み取ることができます。
app.UseCors(builder => builder
.AllowAnyHeader()
.AllowAnyMethod()
.WithOrigins(new string[] { "www.example1.com", "www.example2.com" })
.AllowCredentials()
);
渡された文字列が "*"のみの場合でも、signalRに問題があります。多くの文字列を渡し、そのうちの1つが "*"である場合、それは機能します。