Запрос кросс-источника заблокирован в ядре asp.net. - PullRequest
0 голосов
/ 13 марта 2019

Я работаю над ядром asp.net.Я хочу сделать междоменный запрос. У меня есть клиент javascript, когда я делаю hubConnection для междоменного концентратора signalR, то появляется следующая ошибка: «Доступ к XMLHttpRequest в« https://localhost:44373/chatHub/negotiate?token=12' от источника »https://localhost:44381'была заблокирована политикой CORS: Ответ на запрос предварительной проверки не прошел проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Код клиента Javascript

var connection = new signalR.HubConnectionBuilder().withUrl("https://localhost:44373/chatHub?token="+12).build();

Класс запуска в проекте междоменного сигнализатора

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddCors(options => options.AddPolicy("CorsPolicy", builder =>
    {
        builder
           .AllowAnyMethod()
           .AllowAnyHeader()
           .WithOrigins("*")
           .AllowCredentials();
    }));
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    services.AddCors();
    services.AddSignalR();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }

    //app.UseCors(builder =>
    //{
    //    builder.WithOrigins("*")
    //       .AllowAnyHeader()
    //       .AllowAnyMethod()
    //       //.WithMethods("GET", "POST")
    //       .AllowCredentials();
    //});

    // ... other middleware ...
   // app.UseCors("CorsPolicy");
    app.UseSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();

    app.UseMvc();
}

1 Ответ

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

В вашем стартап-классе удалите комментарий в следующей строке // app.UseCors("CorsPolicy");

Вы создали политику в методе ConfigureServices(), теперь вам нужно указать приложению использовать эту политику в методе Configure()

EDIT:

В ответ на ваш комментарий, если вы хотите разрешить любое происхождение в вашей политике CORS, вместо .WithOrigins("*") вместо .AllowAnyOrigin().

...