Как позволить прокси-серверу Zuul обрабатывать Cors? - PullRequest
0 голосов
/ 20 мая 2018

У меня есть несколько микросервисов за микросервисом, действующим как прокси-сервер zuul.

При вызове извне домена микросервисы возвращают «403-Invalid Cors».

Это решается добавлениемпосле каждый микросервис:

@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**"); //just for the sake of explaination i'm allowing everything
}
}

В любом случае, это плохой дизайн: у меня все-таки есть шлюз zuul api!Это должно быть сделано с помощью этого, и микросервисы должны фактически возвращать эту ошибку при непосредственном вызове.

Итак, я перенес ту же самую конфигурацию только на свой микросервис zuul , вот она, кстати:

@SpringBootApplication
@EnableSwagger2
@EnableZuulProxy
@ComponentScan(basePackages = "my.base.package")
public class MyApiGateway extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return configureApplication(builder);
}
  ....

Реквизиты:

zuul:
 prefix: /api
 routes:
   my-api:
     path: /myApi/**
     url: 'http: ...'
     stripPrefix: true

Проблема в том, что микросервис по-прежнему возвращает "403 - Invalid Cors"!Что я делаю неправильно?Я полагаю, это происходит потому, что прокси-сервер zuul на самом деле ничего не делает, кроме как для пересылки запроса ... но как настроить его так, чтобы MS-получатель заметил, что запрос поступил от zuul в той же сети и, таким образом, разрешил его?

1 Ответ

0 голосов
/ 21 мая 2018

По крайней мере, в прошлом Spring Cloud не обрабатывал прокси Zuul через Spring MVC Framework, поэтому вы не можете настроить CORS для Zuul, используя WebMvcConfigurerAdapter, см .: https://github.com/spring-cloud/spring-cloud-netflix/issues/888

Вы можете попробовать добавить CorsFilter bean-компонент к вашему Zuul API-шлюзу, см .: https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/web.html#mvc-cors-filter

Или вы можете добавить Spring Security к вашему API-шлюзу, который поставляется с уже интегрированной поддержкой CORS, см .: https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#cors

...