我真正不了解的是使用'?'的好处而不是'&'在网址中:
如果我们使用不同的角色作为第一个分隔符,它会让任何人的生活更轻松。 你能想出一个合理的解释吗?
编辑:经过更多研究,我发现“&”可以是文件名的一部分(terms& conditions.html)所以“?”是一个很好的分离器。但我还是觉得用“?”对于分隔符来说,生活更轻松(从url生成器和解析器的角度来看):
使用“&”有什么好处吗?乍一看还不清楚?
答案 0 :(得分:7)
从URI规范(RFC 3986)的角度来看,这里唯一的分隔符是"?"。查询的格式是不透明的; &符号只是HTML碰巧用于表单提交的内容。
答案 1 :(得分:4)
答案在本文中非常重要 - http://www.skorks.com/2010/05/what-every-developer-should-know-about-urls/。为了突出它,这里是:
查询是将某些参数发送到资源的首选方法 服务器。这些是键=值对,并与其余部分分开 的URL由? (问号)字符,通常是分开的 来自彼此(&符号)字符。你可能不知道的是 通过以下方式将它们彼此分开是合法的这一事实; (分号)字符。以下网址是等效的:
http://www.blah.com/some/crazy/path.html?param1=foo¶m2=bar
答案 2 :(得分:0)
RFC 3896(https://www.ietf.org/rfc/rfc3986.txt)定义了一般和子分隔符......'?'是一般的,'&'和';'是分。规范很清楚。
在这种情况下后者'?' chars将被视为查询的一部分。如果查询解析器严格遵循规范,则会将整个查询传递给app-destination。如果app-destination可以选择以对待?的方式进一步处理查询字符串?作为param名称 - 值对分隔符,这取决于应用程序的设计者。
我的猜测是,这通常“正常”,因为分割查询字符串的代码和原始uri使用所有分隔符进行匹配:1)第一个查询被拆分为“?”然后2)使用包含'?'的char匹配列表解析查询字符串(仅方便)....这可能已经在无处不在的解析库中发生。