springboot内置tomcat版本太高导致前台传数据报 Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986问题

 

 

写了一个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里不就有这个东西吗?于是找了一下

 

 再试试测试数据

 

 成功!

 

posted @ 2021-06-27 09:33  莫困顿  阅读(268)  评论(0编辑  收藏  举报