Как отключить zuul декодирование закодированной косой черты% 2F? - PullRequest
0 голосов
/ 17 мая 2019

Я использую решение с Spring Cloud Zuul и Eureka.Приложение REST регистрируется в Eureka, а Zuul обеспечивает доступ к Сервису через Eureka Service Discovery.

Мне пришлось настроить приложение REST для приема закодированной косой черты в URL:

System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");

Дляпримите закодированную черту в приложении Spring Boot REST и:

@Bean
public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
    DefaultHttpFirewall firewall = new DefaultHttpFirewall();
    firewall.setAllowUrlEncodedSlash(true);
    return firewall;
}

@Override
public void configure(WebSecurity web) throws Exception {
    web.httpFirewall(allowUrlEncodedSlashHttpFirewall());
}

In WebSecurityConfigurerAdapter для той же цели.И:

@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
    UrlPathHelper urlPathHelper = new UrlPathHelper();
    urlPathHelper.setUrlDecode(false);
    configurer.setUrlPathHelper(urlPathHelper);
}

В WebMvcConfigurer для пропуска декодирования кодированных символов url.

После этого только приложение REST начало нормально отвечать на запрос с закодированной косой чертой.Когда я соединил приложение REST с Zuul, шлюзом, проблема произошла с косой чертой, повторяется снова.Я выполнил ту же настройку REST-приложения с Zuul плюс свойство decode-url: false в application.yml, и комбинация Zuul и REST-приложения снова сработала.

Когда я добавил решение обнаружения сервисов / регистрации сервисов с помощью Eureka,проблема началась снова.Я много искал, даже клонировал Spring Cloud Netflix Eureka Server 2.1.0.RELEASE и Eureka Core 1.9.8 , но не смог найти никакого решения.

Как отключить декодирование косой черты в Эврике, закодированной в URL?

1 Ответ

0 голосов
/ 20 мая 2019

Решение состоит в том, чтобы изменить версию Spring Boot с 2.1.3.RELEASE на 2.1.4.RELEASE в шлюзе.

...