springboot-The valid characters are defined in RFC 7230 and RFC 3986
阿新 • • 發佈:2021-02-08
環境 springboot 自帶tomcat
報錯資訊 :
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
postman get 請求資訊
解決方案一:
package com.ford.dsl.config; import org.apache.catalina.connector.Connector; import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TomcatConfig { @Bean public ConfigurableServletWebServerFactory webServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); factory.addConnectorCustomizers(new TomcatConnectorCustomizer() { @Override public void customize(Connector connector) { connector.setProperty("relaxedQueryChars", "|{}[]"); } }); return factory; } }
解決方式二 :conf/catalina.properties中最後新增2行:
tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
重啟tomcat ...
jsp參考
另一種方式
就是發請求前,進行URLEncoder.encode(requestURI,"UTF-8");
然後在後臺接收請求後decode()
String params = request.getParameter(PARAMS);