当前位置:  开发笔记 > 前端 > 正文

查询字符串的URL部分是问号吗?

如何解决《查询字符串的URL部分是问号吗?》经验,为你挑选了1个好方法。

TL; TR:在查询的URL部分是(第一个)问号还是只是一个后跟查询的分隔符?

在RFC 1738,部分3.3,表明"?" (问号)不是查询字符串的一部分,只是将其与路径分开:

http://:/?

RFC 3986附录A中提出的语法也表示"?" 不是实际查询字符串的一部分:

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

现在,让我们考虑两个网址:

    http://server.com/api/item.json

    http://server.com/api/item.json?

它们是等同的还是不同的?

区分它们并用于识别两种不同的资源是否有效?



1> unor..:

TL;博士:

?不是查询组件的一部分.

URI不是等价的,因为一个没有查询组件,而另一个查询组件空的.


URI标准(STD 66)目前是RFC 3986.

第6.2节.比较梯形图描述了如何测试URI是否可能等效的方法.

在6.2.3.基于方案的规范化它说:

除非通过方案规范许可,否则规范化不应在其关联组件为空时删除分隔符.例如,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?有一个空的查询组件.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有