不支持URL中存在特殊字符"/>
SpringBoot内置tomcat,不支持URL中存在特殊字符
转载自以下博客
原博链接:
.
本人作出轻微修改
问题
访问SpringBoot项目,URL为
http://192.168.31.228:10020/login?phone=86|18233334444&msg=123456
项目报错。信息如下:
java.lang.IllegalArgumentException: Invalid character found in the request target [/login?phone=86|18233334444&msg=123456]. The valid characters are defined in RFC 7230 and RFC 3986
解决
发现是Tomcat版本问题,原因高版本加了对请求头字符的限制。
增加对Tomcat配置即可,代码如下
package com.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;/*** 解决高版本Tomcat不支持在URL中传入特殊字符(比如|)的问题*/
@Configuration
public class TomcatServerConfig {@Beanpublic ConfigurableServletWebServerFactory webServerFactory() {TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {@Overridepublic void customize(Connector connector) {//允许特殊字符connector.setProperty("relaxedQueryChars", "|{}[]");}});return factory;}
}
更多推荐
SpringBoot内置tomcat,不支持URL中存在特殊字符
发布评论