Springboot内置Tomcat版本导致的“The valid characters are defined in RFC 7230 and RFC 3986”错误

本文介绍了四种禁用SpringBoot默认的Tomcat容器并改用Jetty的方法:通过pom.xml排除tomcat-starter并引入jetty-starter;设置系统属性禁止某些字符;自定义Tomcat配置类调整允许的字符;以及降低Tomcat版本。这些方案有助于解决特定的HTTP请求解析问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方案一:
在pom文件中排除tomcat的starter

org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-tomcat



增加Jetty依赖

org.springframework.boot
spring-boot-starter-jetty

//亲测靠谱

方案二
在springboot启动类中添加
System.setProperty(“tomcat.util.http.parser.HttpParser.requestTargetAllow”,"[]");

方案三
/**

  • @author: zw
  • @create: 2019-06-27 11:19
    **/
    @Configuration
    public class TomcatConfig {

@Bean
public TomcatServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((Connector connector) -> {
connector.setProperty(“relaxedPathChars”, “”<>[\]^{|}"); connector.setProperty("relaxedQueryChars", "\"<>[\\]^{|}");
});
return factory;
}
}

方案四
降低tomcat版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值