The valid characters are defined in RFC 7230 and RFC 3986
针对Tomcat Server报错: “The valid characters are defined in RFC 7230 and RFC 3986”
解决方案大全:
1、针对于SpringBoot jar启动的项目:
直接在yml中配置:
server.tomcat.relaxedQueryChars=<,>, [,\,],^,`,{,|,}
2、针对tomcat war包部署的任何项目:
修改server.xml文件,如下:
<Connector port="8084" protocol="HTTP/1.1" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>" useBodyEncodingForURI="true" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
3、重载spring boot autoconfigure(非常不建议这么做)
@Bean @ConditionalOnClass(name = "org.apache.catalina.startup.Tomcat") public ConfigurableServletWebServerFactory webServerFactory() { // 可选字符:< > [ \ ] ^ ` { | } // 等价于yml配置:server.tomcat.relaxedQueryChars=<,>, [,\,],^,`,{,|,} TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); factory.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "|{}[]\\")); return factory; }