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

如何读取URL中带^符号的查询参数 解决eBay回调接口400错误问题

问题根因

你遇到的400错误不是业务代码的问题,是Spring Boot内嵌的Web容器(默认Tomcat)默认限制了URL查询参数中允许出现的特殊字符,^不在默认允许的字符列表中,请求还没进入Controller层就被容器直接拦截返回了400。

解决方案

方案1:修改容器配置放开特殊字符限制(最推荐,无需修改业务逻辑)

如果使用默认Tomcat容器,直接在application配置文件中添加如下配置即可:

  • application.properties格式:
server.tomcat.relaxed-query-chars=^
  • application.yml格式:
server:
  tomcat:
    relaxed-query-chars: ^

如果有其他需要放行的特殊字符,用英文逗号分隔添加到配置值里即可。

如果使用Undertow作为内嵌容器,添加配置:

server.undertow.allow-unescaped-characters-in-url=true

方案2:手动解析原始请求参数(备选)

如果因为特殊原因不能修改容器配置,在确认容器放行了请求之后,可以修改Controller方法直接读取原始请求的查询字符串自行解析:

@RestController
@RequestMapping(path = ["/api/ebay/auth"])
class EbayAuthController {

    @GetMapping(path = [""])
    fun getAccessToken(request: HttpServletRequest) {
        val queryString = request.queryString
        // 自行从queryString中解析code参数的值
        val code = queryString.split("&")
            .firstOrNull { it.startsWith("code=") }
            ?.substringAfter("code=")
        println("Auth code: $code")
    }

}

注意事项

放开特殊字符限制后,建议在拿到code参数后增加合法性校验,避免恶意请求带来的安全风险,你这个接口仅用于eBay回调,校验逻辑成本很低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:04