请求带上花括号等字符, 请求无法送达服务端, 报错:
Failed to load resource: the server responded with a status of 400 ()
用 springboot 开发接口时, SpringBoot URL 带有特殊字符 ([]/{} 等), 报 400 错误
这个问题是由于 Tomcat 的新版本中增加了一个新特性, 就是严格按照 RFC 3986 规范进行访问解析, 而 RFC 3986 规范定义了 Url 中只允许包含英文字母(a-zA-Z), 数字(0-9),-_.~4 个特殊字符以及所有保留字符(RFC3986 中指定了以下字符为保留字符:! * ' ( ) ; : @ & = + $ , / ? # [ ]).
解决方案:
1 可以客户端请求时 URL encode 处理特殊字段
2 改用 post 请求 『由于我这是一个新服务在开发中, 所以选用了这种方案』
3 改 Tomcat 配置文件
http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other
官方描述如下
springboot 添加如下:
- @Configuration
- public class PathConfig {
- @Bean
- public ServletwebServerFactory webServerFactory() {
- TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory();
- fa.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "[]{}"));
- return fa;
- }
- }
即可支持花括号请求
来源: http://www.bubuko.com/infodetail-3194929.html