SpringBoot 2.x版本 Tomcat支持特殊字符,URL中有{}[]等报400

我的问题: 我用的是springBoot 2.0.3版本的,在做列表模糊查询的时候,测试人员输入 "["特殊符号下,系统会报错.

现象: 

可以知道这是URL中有特殊字符,新版本的Tomcat严格按照RFC 3986规范进行访问解析,而 RFC 3986规范规定Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。而深究特殊字符来源,一般是get请求中包含json字符串、搜索特殊字符关键字等。

解决方法: 在applicetion启动类中直接插入如下图的这段代码,直接创建一个ServletWebServerFactory对象处理一下特殊字符后交给spring容器管理

总结: 这是因为springBoot1.5以后的版本出现的问题,前面的版本是不会有这种问题的,所以要是用到1.5以后的版本记得做一下特殊字符的处理

你可能感兴趣的:(SpringBoot 2.x版本 Tomcat支持特殊字符,URL中有{}[]等报400)