TL; TR:URL中的(第一个)问号是查询的一部分,还是只是分隔符,然后是查询?
在RFC 1738,部分3.3,表明“?” (问号)不是查询字符串的一部分,而只是将其与路径分开:
http://<host>:<port>/<path>?<searchpart>
RFC 3986附录A中显示的语法也表示“?”。不是实际查询字符串的一部分:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
现在,让我们考虑两个URL:
http://server.com/api/item.json
http://server.com/api/item.json?
它们是等同还是不同?
区分它们并用于标识两个不同的资源是否有效?
tl; dr:
?
不是查询组件的一部分。除非方案规范许可,否则规范化操作不应该在分隔符的关联组件为空时删除分隔符。例如,
http://example.com/?
不能假定URI等同于以上任何示例。
“以上示例”是指:
http://example.com http://example.com/ http://example.com:/ http://example.com:80/
(这4个URI是等效的。)
因此http://example.com/api/item.json
没有查询组件,而http://example.com/api/item.json?
有一个空查询组件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句