有效解决The valid characters are defined in RFC 7230 and RFC 3986问题

今天项目做迁移,想换一个高一点版本的tomcat,就出现了问题,记录一下。

分析原因:
导致上述问题是因为tomcat自tomcat 8.0.35版本之后对URL参数做了比较规范的限制,必须遵循RFC 7230 and RFC 3986规范,对于非保留字字符(json格式的请求参数)必须做转义操作,否则会抛出Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986错误信息。

可以有三种方法解决:

方法一:将json数据进行urlencode编码;
方法二:降低tomcat版本;
方法三:配置tomcat/conf下的catalina.properties

将tomcat.util.http.parser.HttpParser.requestTargetAllow=|修改为
tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

在这里插入图片描述
建议:有时候项目已经运行很久了,如果贸然修改代码,或者降低tomcat的版本,或造成很大的问题或者测试工作量,所以建议使用方法三,从tomcat的层面解决问题。

猜你喜欢

转载自blog.csdn.net/weixin_40584261/article/details/106685998
今日推荐