如何禁用Zuul解码编码的Slash%2F



我正在使用带有弹簧云Zuul和Eureka的解决方案。REST申请注册本身与Eureka和Zuul一起通过Eureka服务发现提供了对服务的访问。

我必须配置其余的应用程序以接受:

接受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());
}

WebSecurityConfigurerAdapter中出于相同的目的。和:

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

WebMvcConfigurer中跳过解码URL编码字符。

之后,仅剩下的应用程序就开始正常回答用编码斜线的请求。当我将其余的应用程序与Zuul连接起来时,Gateway的问题再次发生了。我使用Zuul以及应用程序中的属性decode-url: false对REST应用程序进行了相同的配置。

当我使用Eureka添加服务发现/服务注册解决方案时,问题再次开始。我搜索了很多,甚至克隆了弹簧云Netflix eureka服务器2.1.0.Release和Eureka Core 1.9.8,但找不到任何解决方案。

如何禁用在URL中编码的Eureka中的斜线解码?

解决方案是将Spring Boot版本从2.1.3.Release更改为Gateway中的2.1.4.Release。

最新更新