Preflight Access-Control-Allow-Credentials - PullRequest
0 голосов
/ 17 октября 2018

У меня проблемы с CORS с моим веб-приложением ASP.NET Core, которое развернуто как служба приложений Azure.Внешний интерфейс развертывается как другая служба приложений.Когда я пытаюсь получить доступ к API от внешнего интерфейса, я получаю следующую ошибку:

Не удалось загрузить https://chatclassifier.azurewebsites.net/chatcontroller/getchatData: Ответ на запрос предпечатной проверки не проходит проверку контроля доступа: Значениезаголовок «Access-Control-Allow-Credentials» в ответе - «», который должен быть «true», если режим учетных данных запроса «include».Происхождение 'https://chatclassifierangularfrontend20180924084838.azurewebsites.net' поэтому не допускается.Режим учетных данных запросов, инициированных XMLHttpRequest, контролируется атрибутом withCredentials.

Я использую некоторые файлы cookie для передачи данных между клиентом и сервером.

Я настроил больше CORSПолитика в ASP.NET Core работает следующим образом в Setup.cs

Настройка служб:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAllHeaders",
               builder =>
               {
                   builder
              .WithOrigins("https://XXXXXXXXXXangularfrontend20180924084838.azurewebsites.net")
              .AllowAnyMethod()
              .AllowAnyHeader()
              .AllowCredentials();
               });
    });

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    services.Configure<FormOptions>(x =>
        {
            x.ValueLengthLimit = int.MaxValue;
            x.MultipartBodyLengthLimit = int.MaxValue;
        });
}

Настройка:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    var cookiePolicyOptions = new CookiePolicyOptions
    {
        Secure = CookieSecurePolicy.SameAsRequest,
        MinimumSameSitePolicy = SameSiteMode.None
    };

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
    }

    app.UseCors("AllowAllHeaders");
    app.UseCookiePolicy(cookiePolicyOptions);
    app.UseHttpsRedirection();
    app.UseMiddleware(typeof(ApiExceptionHandling));
    app.UseMvc();
}

Я не добавил никаких других связанных с CORSкод в другом месте в моем коде API.Я попытался добавить атрибут «AllowAllHeaders» CORS в мой контроллер, но это также не сработало.

Кроме того, я добавил следующую строку кода в конфигурацию моего веб-приложения в Azure в CORS.

enter image description here

Очевидно, я изменил имя URL-адреса, добавив в него XXXXXX, и убедился, что они совпадают как в моем портале Azure, так и в коде веб-приложения.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 03 ноября 2018

Не следует объединять конфигурацию CORS службы приложений Azure с конфигурацией в коде.Если вы включаете CORS в службе приложения, ваша конфигурация CORS в коде в основном игнорируется.

Это происходит из-за того, что служба приложений перехватывает запросы OPTIONS.

...