为什么我们有两个查询参数分隔符?

时间:2017-06-22 11:58:55

标签: web query-string rfc3986

我们都知道查询字符串有2个分隔符。哪些是?&。为什么我们不在这两种情况下只使用??为什么我们需要&
RFC 3986给出了标准的描述,但没有为我们提供关于该主题的动机。

  

查询组件由第一个问题指示      标记(“?”)字符并以数字符号(“#”)字符结束      或者在URI的末尾。

1 个答案:

答案 0 :(得分:1)

如果您阅读了各种URL规范,您将看到它没有为<query>组件设置任何语法。实际上,客户端和服务器可以就字符串的任何语法达成一致,但受允许/保留字符的限制。

最常用的?<name>=<value>&<name>=<value>语法来自HTML规范。查找指定表单参数的“application / x-www-form-urlencoded”编码方案的HTML规范部分(选择任何版本)。

为什么HTML规范不使用&作为参数分隔符?我认为这是因为网址规范指出?部分<query> 保留。 (因此,如果HTML使用?作为分隔符,则需要进行百分比编码。)

为什么在?部分保留<query>?那么现在我们在统一的URL规范存在之前进入http:超链接的历史。基本上,我不知道,但它可能与早期Web服务器或浏览器解析超链接的方式有关。