ASP.NET Core API と Angular クライアントに問題があります。API と Angular を接続するために SignalR を実装したいと考えています。クライアントで API からデータを取得できるため、クライアントと API ではすでに cors ポリシーがアクティブになっています。しかし、問題は、SignalR を使用しようとすると、CORS POLICY でエラーが発生することです。
' の XMLHttpRequest へのアクセスhttp://localhost:50501/コーディネーターハブ/ネゴシエート「起源から」http://ローカルホスト:4200' は CORS ポリシーによってブロックされました: プリフライト要求への応答がアクセス制御チェックに合格しません: 要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません。
しかし、API の Startup.cs 内にはすでに cors ポリシーがあり、次のようになります。
ConfigureServices メソッドでは:
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder =>
builder.WithOrigins("http://localhost:4200/")
.AllowCredentials()
//.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowedToAllowWildcardSubdomains());
});
そして、Configure メソッド内では:
app.UseCors("AllowSpecificOrigin");
クライアントでは、API とクライアント間の接続を確立したいだけなので、次のようになります。
this.hubConnection.start({withCredentials: false}).then(() =>
this.hubConnection.invoke('send', 'Hello'));
ベストアンサー1
私はこれに従って問題を解決しましたリンク
このブロックコードをサービスに追加
services.AddCors(options => options.AddPolicy("CorsPolicy",
builder =>
{
builder.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed((host) => true)
.AllowCredentials();
}));
アプリの設定にこのブロックコードを追加します
app.UseCors("CorsPolicy");
app.UseSignalR(routes =>
{
routes.MapHub<General>("/hubs/general");
});