Ошибка браузера: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 07 мая 2019

Я использую Springboot 2.1.4 в качестве сервера, а Angular 6 в качестве клиента.Spring-cloud-gateway предоставляет сервис шлюза, который в свою очередь перенаправляет запрос в другой «профильный» микросервис.При отправке запроса в любую конечную точку службы «профиль» я получаю сообщение об ошибке - источник CORS не установлен - в консоли браузера.

Я включил следующий код в основные классы шлюза и службы профиля.

        @Bean
public CorsFilter corsFilter() {
    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    final CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.addAllowedOrigin("*");
    config.addAllowedHeader("*");
    config.addAllowedMethod("OPTIONS");
    config.addAllowedMethod("HEAD");
    config.addAllowedMethod("GET");
    config.addAllowedMethod("PUT");
    config.addAllowedMethod("POST");
    config.addAllowedMethod("DELETE");
    config.addAllowedMethod("PATCH");
    source.registerCorsConfiguration("/**", config);
    return new CorsFilter(source);
}

Я также добавил в application.yml для службы шлюза, но безрезультатно.

spring:
 cloud:
  gateway:
   globalcors:
    corsConfigurations:
      '[/**]':
        allowedOrigins:
        - "*"
        allowedMethods:
        - GET
        - POST

Насколько я понимаю, ответственность за включение заголовка 'Access-Control-Allow-Origin' лежит на сервере.так что браузер может инициировать фактический запрос после предполетного.Я не знаю, является ли это службой шлюза или службами ресурсов, которые должны добавить этот заголовок в ответ.В прошлых проектах (с zuul) работала настройка corsFilter в сервисе шлюза.Помещение его в обе службы вызывало ошибку двойного заголовка.Но с помощью Spring-Cloud-Gateway я не могу заставить Cors работать.Любая помощь будет искренне оценена.Спасибо

...