springboot 中,使用tomcat做服务器,遇到 The valid characters are defined in RFC 7230 and RFC 3986 。
原因,tomcat 高版本使用了更标准的rfc规范,在url上不允许使用部分特殊字符。
源码参看 org.apache.tomcat.util.http.parser.HttpParser 129行
解决方法:
1、改成post方法。这个是最简单,也是最合理的。
2、在启用前设置:
System.setProperty("tomcat.util.http.parser.HttpParser.requestTargetAllow","{}");
经测试和查看源码,在tomcat高版本中无用。
3、配置文件中增加
server.tomcat.relaxed-query-chars={,}
yml中的是
此方法可行。