Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。
具体来说,就是添加了些规则去限制HTTP头的规范性。
org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target
if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i == 35 || i == 60 || i == 62 || i == 92 || i == 94 || i == 96 || i == 123 || i == 124 || i == 125) { IS_NOT_REQUEST_TARGET[i] = true; }
不太想用POST,又由于是内嵌的Tomcat,所以为了开发方便还是想通过修改springboot配置的方式去解决,
刚看了下 server.tomcat.* 相关的配置,暂时没有找到解决非法字符的问题### 问题描述
<parent>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!--<version>1.5.14.RELEASE</version>--> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --></parent>
请求URL:http://localhost/xxx/中文参数
报错:java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
很多人给了解决办法,但是还是感觉不太灵活,还是想通过springboot配置的方式,
郎朗坤