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

URL参数名称中使用字符“|”是否合法?及指定URL有效性与“|”字符使用合理性咨询

关于URL中“|”字符的合法性问题

1. “|”是否可作为合法的URL参数名称字符?

根据URL的官方规范(RFC 3986),“|”并不属于允许直接在URL中使用的合法字符。URL的字符体系分为三类:

  • 非保留字符:A-Za-z0-9-._~,这类字符可以直接在URL的任何部分(包括查询参数)使用,无需编码。
  • 保留字符::/?#[]@!$&'()*+,;=,这类字符在URL中有特定语义(比如?分隔路径和查询参数,&分隔多个参数),如果要把它们当作普通字符使用,必须进行百分号编码。
  • 未定义字符:除了上述两类之外的所有字符,“|”就属于这一类。规范明确要求这类字符必须经过百分号编码(转换为%7C)后才能出现在URL中。

2. 你提供的URL是否合法?

你给出的URL:

https://sales-stage-api.techsg.cloud/requests/statistics?"meetingTime"|date:timeZone={"start":"2022-02-01 00:00:00 +07:00","end":"2022-02-28 23:59:00 +07:00"}

虽然它在当前环境中能正常运行,但严格来说是不符合URL规范的。问题出在参数名称里直接使用了未编码的“|”字符。

很多现代浏览器、后端框架或者代理服务器会做宽松处理,兼容这类不符合规范的写法,但这并不代表它是合规的。这种写法存在潜在风险:在某些严格遵循规范的环境(比如老旧的HTTP客户端、特定的代理服务、或者严格的参数解析库)中,可能会被错误解析——比如把“|”当作参数分隔符,或者直接拒绝该请求,导致服务调用失败。

合规的修正方案

把URL中的“|”替换为它的百分号编码形式%7C,修正后的URL如下:

https://sales-stage-api.techsg.cloud/requests/statistics?"meetingTime"%7Cdate:timeZone={"start":"2022-02-01 00:00:00 +07:00","end":"2022-02-28 23:59:00 +07:00"}

内容的提问来源于stack exchange,提问作者Khang Hồ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:27:29