1. 报错详情:
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String “//”
2. 原因
Spring Security 框架中提供了一个 HttpFirewall,这是一个请求防火墙,它可以自动处理掉一些非法请求,请求地址格式中不能包含;、// 、 % …等字符或编码,必须是标准化 URL。
3. 解决方法
(1)方法一:
请求地址中去掉多余的"/"
(2)方法二
如果希望请求地址中可以出现 %,在SpringSecurity中进行如下配置
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/*
* 支持"//"
*/
@Bean
public HttpFirewall httpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
firewall.setAllowUrlEncodedDoubleSlash(true);
return firewall;
}
}