针对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; } |