解决 springboot 2.6.6 版本中内嵌 tomcat 9.0.60 版本 严格执行RFC 3986规范,导致在 GET 请求中出现保留字符请求错误的问题。
项目中get请求:http://domain:port/api/module/function/getList?pageNum=1&pageSize=1000&keyWord=[]&id=;
keyWord的参数应该是 keyWord="[]",如果不加双引号,keyWord就变成了数组,后台接口就报错了。
调查原因:springboot 2.6.6 版本中内嵌 tomcat 9.0.60 版本 严格执行RFC 3986规范, "[]" 是规范的保留字。
处理方法:
/**
* Project :
* Version : 1.01
* Date : 2023/7/26 星期三 14:11
*
* @Author: chenxy
* Modification history :
* 解决 springboot 2.6.6 版本中内嵌 tomcat 9.0.60 版本 严格执行RFC 3986规范,导致在 GET 请求中出现保留字符请求错误的问题。
**/
@Configuration
public class TomcatConfig {
@Bean
public TomcatServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((Connector connector) -> {
connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
});
return factory;
}
}

浙公网安备 33010602011771号