.NetCore SignalR CORS не разрешает звонки клиентов - PullRequest
0 голосов
/ 12 марта 2019

В моем приложении .Netcore я использую SingalR для передачи сообщений различным клиентам

Мой код такой

      services.AddCors( options =>
                          {
                              options.AddPolicy( "mypolicy", builder =>
                                                 {
                                                     builder.AllowAnyHeader();
                                                     builder.AllowAnyMethod();
                                                     builder.AllowAnyOrigin();
                                                     builder.AllowCredentials();
                                                 } );
                          } );

        services.AddMvc();
        services.Configure<MvcOptions>( options => { options.Filters.Add( new CorsAuthorizationFilterFactory( "mypolicy" ) ); } );
        services.Configure<SignalROptions>( options => options.Hubs.EnableDetailedErrors = true );

Мое приложение .Netcore запущено здесь http://localhost:88, и я получаю к нему доступ через http://localhost

Если я попытаюсь использовать

        builder.WithOrigins("http://localhost");

Я могу получить доступ к службам SignalR. Моя проблема в том, что я буду получать доступ к приложению .NetCore из разных клиентов, то есть из разных клиентских доменов, поэтому практически невозможно добавить всех этих клиентов в WithOrgins.

Итак, builder.AllowAnyOrigin (); лучшее решение для меня.

Может кто-нибудь сказать мне, как этого добиться.

1 Ответ

0 голосов
/ 12 марта 2019

Вы должны вызвать метод app.UseCors (), который применяет политики CORS ко всем конечным точкам приложений через CORS Middleware.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
       app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseCors(); 

    app.UseHttpsRedirection();
    app.UseMvc();
}

больше о корсах вы можете найти здесь

...