Я использую 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 работать.Любая помощь будет искренне оценена.Спасибо