转载自以下博客
原博链接:
https://blog.csdn.net/baidu_37313657/article/details/107560020.
本人作出轻微修改
问题
访问SpringBoot项目,URL为
http://192.168.31.228:10020/login?phone=86|18233334444&msg=123456
项目报错。信息如下:
解决
发现是Tomcat版本问题,原因高版本加了对请求头字符的限制。
增加对Tomcat配置即可,代码如下
package com.cn.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 {
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
//允许特殊字符
connector.setProperty("relaxedQueryChars", "|{}[]");
}
});
return factory;
}
}