Включение CORS в гибкой среде Google App Engine - PullRequest
0 голосов
/ 22 ноября 2018

У меня возникают проблемы с включением поддержки CORS для приложения ASP.NET CORE, размещенного с помощью Google App Engine и гибкой среды.

Каждый запрос AJAX с использованием библиотеки axios приводит к следующей ошибке ...

Доступ к XMLHttpRequest в 'https://api.[something].services/request' от источника' http://localhost:8080' заблокирован политикой CORS: заголовок «Access-Control-Allow-Origin» отсутствуетзапрашиваемый ресурс.

Вот конфигурация CORS на веб-интерфейсе API:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options => 
    options.AddPolicy("MyPolicy", 
        builder =>
        {
            builder.AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials();
        }));

   // ...

   services.AddMvc();
}

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

        System.Environment
              .SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS",
                          Path.Combine(Directory.GetCurrentDirectory(),
                          Configuration["GAE:Credentials"]));
    }
    else
    {
        app.UseHsts();
    }

    // ...

    app.UseCors("MyPolicy");
    app.UseHttpsRedirection();
    app.UseMvc();
}

1 Ответ

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

Этот тип ошибок CORS обычно получается, когда resource1 выполняет перекрестные HTTP-запросы к другому ресурсу2 без обработчика для resource2, возвращая заголовок ответа Access-Control-Allow-Origin:, содержащий значение http://resource1.

С учетом этого необходимо правильно настроить конфигурацию заголовка заголовка http в файле приложения App.yaml, который развернут в App Engine.Большинство браузеров используют объект XMLHttpRequest для выполнения междоменного запроса, заботясь о вставке правильных заголовков и обработке взаимодействия CORS с сервером.

Вся эта информация относится к стандарту App Engine, а не к среде App Engine Flex.Это связано с тем, что запросы CORS по умолчанию запрещены в App Engine Flex .Однако вы можете разрешить запрос CORS, добавив эти "x-google-endpoints" в документацию по настройке API.

...