-- 异常
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986……
错误原因:tomcat8 自己加了一些http请求头验证导致
当在浏览器中访问时 URL中带有特殊字符,如花括号冒号时,就会出现这个错误。
例如:http://localhost:8080/index.do?{id:123}
解决方法: 添加 tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
tomcat7项目换到tomcat8乱码问题
原因:tomcat7默认编码ISO-8859-1 tomcat8默认UTF-8
解决方法:在 conf/catalina.properties 添加或者修改: tomcat7 server.xml里URIEncoding设为URIEncoding="UTF-8"无中文乱码 换为tomcat8后出现乱码则如下设置
tomcat8 server.xml里URIEncoding设为URIEncoding="ISO-8859-1"
补充乱码说明
- 关于编码问题
1.1 Tomcat7这个URI默认的编码带来很多问题,下面这个应该很常见:
new String(value.getBytes(“ISO-8859-1”), param);
如果server.xml配置上URIEncoding=“UTF-8”就不需要了。
进而项目直接迁移到Tomcat8,不修改server.xml,或者再次加上URIEncoding=“UTF-8”也是不会有问题。
1.2 Tomcat8是不是就是因为开发者服务端转码麻烦,URI默认的编码改为“UTF-8”。
对于在Tomcat8开发项目,就简单很多,不需要上面的那段不人道的代码。但是从Tomcat7迁移上来的项目,要么,去掉上面的代码,要么server.xml添加URIEncoding=“ISO-8859-1”,浪费Tomcat8一番美意。