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