get请求访问项目报500-The servletPath was rejected because it can only contain printable ASCII cha。。。
昨天,项目get请求忽然报500错误,错误提示The servletPath was rejected because it can only contain printable ASCII cha。。。
搞了好久,百度看了很多帖子,都说是Spring Security的安全防火墙不允许一些特殊符号,比如%、//之类的的原因,就知道是因为Security升级jar导致的问题。
那么解决办法呢?看了很多,网上全都是springboot的解决办法,没办法,我公司项目是老项目,架构还没升级,框架还是springMvc。最后走了2、3小时的歪路,终于找到mvc的配置方法,如下:
设置防火墙格式为:DefaultHttpFirewall,相比较默认的StrictHttpFirewall更为宽松的格式
<beans:bean id="davRequestsHttpFirewall" class="org.springframework.security.web.firewall.DefaultHttpFirewall"/>
<http pattern='/dav/**' create-session="never" security="none"/>
<http-firewall ref="davRequestsHttpFirewall"/>
重启以后就可以正常访问了,大功告成~
-- 以此记下错误原因以及解决办法,下次方便找,利人利己