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

REST服务含斜杠路径问题求助:URL编码%2F无效

解决ColdFusion REST服务含编码斜杠的404问题

针对你遇到的路径参数含编码斜杠(%2F)导致404的问题,按以下步骤排查解决:

1. 确认JVM参数是否生效

添加-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true后,必须重启ColdFusion服务才能生效。可以通过以下方式验证:

  • 登录CF Admin,进入「Server Settings > Server Info」,在「Java Virtual Machine」部分查看JVM参数是否包含该配置。
  • 查看Tomcat启动日志(cf_root\cfusion\runtime\logs\stdout.log),确认参数已被加载。

2. 检查ISAPI重定向器与IIS配置

你使用的ISAPI重定向器可能在请求到达Tomcat前就解码了%2F,导致路径被拆分。需要做以下调整:

  • 修改IIS请求筛选:打开IIS管理器,找到站点的「请求筛选」,进入「URL」选项卡,启用「允许双重转义」。
  • 配置ISAPI重定向器:编辑isapi_redirect.properties(通常位于cf_root\cfusion\runtime\conf),添加或修改:
    allowEncodedSlashes=true
    
    保存后重启IIS服务。

3. 调整REST路径的正则匹配规则

原路径restpath="GetCompany/{CompanyName: .+}"中的.+可能无法正确匹配解码后的斜杠(会被视为路径分隔符)。尝试修改为更宽松的匹配规则:

restpath="GetCompany/{CompanyName: [a-zA-Z0-9%_\-\.\+/]+}"

或改用非贪婪匹配:

restpath="GetCompany/{CompanyName: .*}"

4. 切换为查询参数传参(兜底方案)

如果以上配置都无法解决,建议将公司名称作为查询参数传递,避免路径参数含特殊字符:

  • 修改REST服务路径为restpath="GetCompany"
  • 请求URL改为:/GetCompany?name=Sister%2FBrother+Inc.
  • 在服务方法中通过URL.name获取参数值

这种方式更符合URL设计规范,也能避免各类路由解析的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:13:17