使用编码后URL的访问Tomcat服务器,比如使用URL:
http://localhost/login%2Findex
访问Tomcat服务器,导致如下图错误:
查看访问的URL可以看出来跟普通的URL不太一样,其中包含了%2F
这样的字符,经过查阅发现这个URL经过了HTML 的URL编码(“/”被编码为:%2F, “\”被编码为:%5C),然而Tomcat服务器默认是不支持URL中“/”被编码的
可以通过修改Tomcat的配置参数:Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true,下面提供了两种修改方法:
1、修改配置文件:%TOMCAT_ROOT%/conf/catalina.properties文件中添加一行参数配置:Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
2、添加Tomcat的启动参数:-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
需要说明的是,从Apache Tomcat的官网文档上看这个配置项 属于Security组,建议大家不要轻易开启,想办法把对URL中“/”和“\”的编码去掉即可。
官方文档地址: http://tomcat.apache.org/tomcat-6.0-doc/config/systemprops.html#Security