You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat 10中请求含连续多斜杠导致400 Bad Request错误求助

问题分析与解决方案

核心原因

升级到Tomcat 10后,默认启用了严格的HTTP合规检查,路径中的连续斜杠(//或多个/)会被判定为欺骗性请求路由,Tomcat会直接返回400 Bad Request,请求根本无法到达Spring层。而Tomcat 8默认允许这种路径格式,所以旧环境下可以正常工作。你看到的CORS错误是附带问题——因为Tomcat直接返回400时没有添加CORS响应头,导致前端浏览器触发CORS报错,并非Spring的CORS配置有问题。

解决方法

方法1:独立部署Tomcat的配置修改

在Tomcat的conf/server.xml文件中,找到对应端口的Connector节点,添加allowDoubleSlash="true"属性:

<Connector port="9090" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           allowDoubleSlash="true" />

修改完成后重启Tomcat即可生效。

方法2:嵌入式Tomcat(Spring Boot场景)配置

如果项目使用Spring Boot嵌入式Tomcat,创建配置类自定义Tomcat参数:

@Configuration
public class TomcatCustomConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.addConnectorCustomizers(connector -> {
            // 允许路径中存在连续双斜杠
            connector.setAllowDoubleSlash(true);
            // 若还有反斜杠相关问题,可额外开启以下配置
            // connector.setAllowBackSlash(true);
        });
    }
}

补充说明

  • 无需修改你的Spring Security CORS配置,因为请求根本没进入Spring处理流程,CORS错误是400响应缺少CORS头导致的次生问题,解决Tomcat的路径检查后,CORS问题会自动消失。
  • 该配置是为了兼容遗留系统的旧请求格式,若后续有条件,建议逐步修复前端请求,避免使用连续斜杠的路径格式,符合HTTP规范。

内容的提问来源于stack exchange,提问作者Gokul P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:46:30