处理Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
异常原理
Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,在http解析时做了严格限制。
RFC3986文档规定,请求的Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。
解决办法
网上各种修改tomcat配置文件的方法,对tomcat8有效,最tomcat8以后的版本无效,话不多说,直接上解决新版本的方法:
在主类中的main方法下添加一个方法。
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setProperty(“relaxedQueryChars”, “|{}[]”);
}
});
return factory;
}
直接解决。不用修改任何配置文件。搞定!