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