Произошла ошибка CORS на этапе согласования SignalR - PullRequest
2 голосов
/ 27 марта 2020

У меня появляется следующая ошибка в консоли после перехода с Asp. net ядро ​​2.2 на 3.1

Access to XMLHttpRequest at 'someuri/negotiate?negotiateVersion=1' from 
origin 'http://localhost:4208' 
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested 
resource.

и следующая конфигурация SignalR:

app.UseCors(Constants.Policy);
app.UseAuthentication();

app.UseEndpoints(
          endpoints =>
          {
             endpoints.MapHub<SomeHub>("/ws/someuri");
          });

Я добавил следующую политику:

options.AddPolicy(Constants.Policy,
                    p => 
                        p.AllowAnyHeader()
                       .AllowAnyMethod()
                       .AllowCredentials()
                       .WithOrigins("http://localhost:4208"));

Но это не помогло.

1 Ответ

0 голосов
/ 27 марта 2020

Вы должны настроить CORS таким образом, и порядок важен!

В вашем методе настройки:

public override void Configure(IApplicationBuilder app, HostConfiguration hostConfiguration, ILogger<Startup> logger)
{
    base.Configure(app, hostConfiguration, logger);

    app.UseWebSockets();

    app.UseCors(CorsPolicy); // first configure CORS, then map Hub

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<SomeHub>("/someuri");
    });
}

Затем при добавлении CORS:

/// <summary>
/// Adds the CORS.
/// </summary>
private void AddCors(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy(CorsPolicy, builder => builder.WithOrigins("http://localhost:4208")
            .AllowAnyHeader()
            .AllowAnyMethod()
            .AllowCredentials()
            .SetIsOriginAllowed((host) => true));
    });
}

Более подробный ответ здесь .

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...