SpringBoot URL带有特殊字符([]/{}等),报400错误

今天使用springboot开发接口,版本——2.1.3.RELEASE,需要接收json格式的字符串数据,json串中只有大括号时还正常,没有400,但是在传json数组时,带有中括号[],拦截器都不进就直接400,经过一阵排查,json格式等都没有问题。最后百度得知Tomcat的高版本(具体从哪个版本开始没有具体了解)中增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范规定Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。
那解决办法有两种,转义和配置Tomcat
转义字符就不说了,下面贴上2.1.3.RELEASE版本Springboot的配置方法:

@Configuration
public class XxxConfig   {

    @Bean
    public ServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
        fa.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
        return fa;
    }
}
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值