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

Spring Boot应用中如何在查询参数中使用|管道运算符

在Spring Boot中正确传递|管道运算符作为查询参数值

方案1:前端对|进行URL编码

管道符|的标准URL编码值是%7C,请求时直接将参数中的|替换为%7C即可。例如:
原本的请求:

GET /api/data?filter=a|b

修改为编码后的请求:

GET /api/data?filter=a%7Cb

后端接收参数时会自动解码为a|b,无需额外处理逻辑。

方案2:后端配置允许管道符通过Tomcat校验

如果无法修改前端请求逻辑,或有特殊场景需要直接传递|,可以通过配置Tomcat放宽对查询字符的限制:

方式A:通过配置文件修改

在application.properties中添加:

server.tomcat.relaxed-query-chars=|
# 若路径中也需要使用|,再添加以下配置
# server.tomcat.relaxed-path-chars=|

或在application.yml中配置:

server:
  tomcat:
    relaxed-query-chars: "|"
    # relaxed-path-chars: "|"

方式B:自定义Tomcat连接器(适用于复杂配置场景)

创建配置类,手动设置Tomcat允许的查询字符:

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfig {
    @Bean
    public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatCustomizer() {
        return factory -> {
            factory.addConnectorCustomizers(connector -> {
                // 允许|作为查询参数字符
                connector.setAttribute("relaxedQueryChars", "|");
            });
        };
    }
}

注意事项

  • 优先采用URL编码方案,这是HTTP协议的标准处理方式,能避免潜在的安全风险(如注入攻击)。
  • 后端放宽字符限制仅在必要时使用,不要随意将大量特殊字符加入允许列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:57:22