Ошибка CROS в asp. net core3.1 и сигнализаторе Core - PullRequest
0 голосов
/ 09 апреля 2020

Я следовал точному руководству из

https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-3.1&tabs=visual-studio

, а затем я хотел получить доступ к концентратору из другого источника. поэтому я следовал точным инструкциям в

https://docs.microsoft.com/en-us/aspnet/core/signalr/security?view=aspnetcore-3.1

но я получаю эту ошибку:

Access to XMLHttpRequest at 'http://localhost:55039/myhub/negotiate?negotiateVersion=1' from origin 'http://localhost:54114' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

вот код:

 public void ConfigureServices(IServiceCollection services)
        {

            services.AddCors();
 services.AddSignalR(o =>
            {
                o.EnableDetailedErrors = true;
                o.HandshakeTimeout = TimeSpan.FromSeconds(5);
            });
}

и:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {   
app.UseCors(builder =>
            {
                builder.WithOrigins("http://localhost:54114/")
                    .AllowAnyHeader()
                    .WithMethods("GET", "POST")
                    .AllowCredentials();
            });
            app.UseStaticFiles();

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapHub<MyHub>("/myhub");
            });
}

asp. net core 3.1

AspNetCore.SignalR

любые советы и инструкции будут оценены

1 Ответ

1 голос
/ 10 апреля 2020

Настройте CORS, как показано ниже:

ConfigureServices

services.AddCors(options => 
        options.AddPolicy("CorsPolicy",builder =>
        {
            builder.WithOrigins("http://localhost:44338")
                   .AllowAnyHeader()
                   .AllowAnyMethod()
                   .SetIsOriginAllowed((host) => true)
                   .AllowCredentials();
        }));
        services.AddSignalR(o =>
        {
            o.EnableDetailedErrors = true;
            o.HandshakeTimeout = TimeSpan.FromSeconds(5);
        });

Настройка

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
       //...
        app.UseCors("CorsPolicy");

        //...

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapHub<ChatHub>("/chatHub");
        });
    }
...