首页 > Web开发 > 详细

Tomcat8升级后URL中特殊字符报错出现原因

时间:2019-09-12 20:05:35      阅读:507      评论:0      收藏:0      [点我收藏+]

请求带上花括号等字符,请求无法送达服务端,报错:

Failed to load resource: the server responded with a status of 400 ()

https://blog.csdn.net/Carino_U/article/details/78973120

用springboot开发接口时,SpringBoot URL带有特殊字符([]/{}等),报400错误

这个问题是由于Tomcat的新版本中增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。

解决方案: 

  ① 可以客户端请求时URL encode处理特殊字段

  ② 改用 post 请求 『由于我这是一个新服务在开发中,所以选用了这种方案』

  ③ 改 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;
    }
}

即可支持花括号请求

Tomcat8升级后URL中特殊字符报错出现原因

原文:https://www.cnblogs.com/wwmiert/p/11514659.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!