写了一个post请求的controller代码,用postman测试数据时发现老是最后一条数据导致报400错误,如果删掉最后一条数据后台能接收到,但由于少了关键的最后一条数据而导致后面的报错
网上百度一番,发现是springboot内置的版本太高,而tomcat8.0以上版本遵从RFC规范添加了对Url的特殊字符的限制,url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~四个特殊字符以及保留字符( ! * ’ ( ) ; : @ & = + $ , / ? # [ ] ) (262+10+4+18=84)这84个字符,请求中出现了{}大括号或者[],所以tomcat报错。设置RelaxedQueryChars允许此字符(建议),设置requestTargetAllows选项(Tomcat 8.5中不推荐)。 根据Tomcat文档,下面提供一种方法来设置松弛的QueryChars属性*
正好我测试的最后一条数据里包含了这样的字符,于是想着试试降springboot里的tomcat版本,直到。。。
偶然看到某位网友说的
曹了!真是一言惊醒梦中人啊 postman里不就有这个东西吗?于是找了一下
再试试测试数据
成功!
原文:https://www.cnblogs.com/pengjiaquan/p/14506249.html