今天部署环境,tomcat突然报这个错误,接口返回400。
网上查了下,大概原因是:
在tomcat 8.0.35之后 ,tomcat对url的参数做了比较规范的限制,必须按照RFC 7230 and RFC 3986规范,对于非保留字字符,如果不做转义处理,一律都会报The valid characters are defined in RFC 7230 and RFC 3986 错误。
解决这个问题的办法有几个:
- 把非保留字字符做转义
- 就是使用保留字字符
- 要么就是换比较底一点的tomcat版本
- 将json数据进行urlencode编码就可以了 即把json中的{}编码
本人觉得解决问题最简单粗暴的方式就是使用第三种方法,当然,最好还是要按照规范来写,长远考虑的话.