解决方案
-
把多余的
/
去掉就好了。 -
但我疑惑的是为什么php就可以,java报错了,后来查到是
Spring Security
拦截了。 -
源代码在
StrictHttpFirewall#setAllowUrlEncodedDoubleSlash
。 -
这个类里面其他的方法应该也和特殊字符有关(如setAllowBackSlash、setAllowUrlEncodedPercent等)。
-
重新注入
StrictHttpFirewall
对象,就可以让它支持//
的模式。
/**
* 配置地址栏不能识别 // 的情况
* @return
*/
@Bean
public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
StrictHttpFirewall firewall = new StrictHttpFirewall();
//此处可添加别的规则,目前只设置 允许双 //
firewall.setAllowUrlEncodedDoubleSlash(true);
return firewall;
}
- 这样就能成功了,结果如下图所示。