【发布时间】:2017-11-25 16:46:09
【问题描述】:
我们都知道查询字符串有 2 个分隔符。分别是? 和&。为什么我们不在这两种情况下都只使用??为什么我们需要&
RFC 3986 提供了标准的描述,但没有为我们提供关于该主题的动力。
查询组件由第一个问题表示 标记 ("?") 字符并以数字符号 ("#") 字符结尾 或在 URI 的末尾。
【问题讨论】:
标签: web query-string rfc3986
我们都知道查询字符串有 2 个分隔符。分别是? 和&。为什么我们不在这两种情况下都只使用??为什么我们需要&
RFC 3986 提供了标准的描述,但没有为我们提供关于该主题的动力。
查询组件由第一个问题表示 标记 ("?") 字符并以数字符号 ("#") 字符结尾 或在 URI 的末尾。
【问题讨论】:
标签: web query-string rfc3986
如果您阅读各种 URL 规范,您会发现它没有为 <query> 组件设置任何语法。事实上,客户端和服务器可以就任何受允许/保留字符限制的字符串语法达成一致。
最常用的?<name>=<value>&<name>=<value> 语法来自HTML 规范。查找为表单参数指定“application/x-www-form-urlencoded”编码方案的 HTML 规范部分(选择任何版本)。
为什么 HTML 规范不使用 & 作为参数分隔符?我认为这是因为 URL 规范说 ? 在<query> 部分是保留。 (因此,如果 HTML 使用 ? 作为分隔符,则需要进行百分比编码。)
为什么? 保留在<query> 部分?好吧,现在我们正在了解在统一 URL 规范存在之前的 http: 超链接的历史。基本上,我不知道,但它可能与早期的 Web 服务器或浏览器解析超链接的方式有关。
【讨论】: