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"/>


重启以后就可以正常访问了,大功告成~

-- 以此记下错误原因以及解决办法,下次方便找,利人利己
posted @ 2022-08-11 14:40  进击的喜之郎  阅读(1165)  评论(0编辑  收藏  举报