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

锤子

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

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

http://<host>:<port>/<path>?<searchpart>

RFC 3986附录A中显示的语法也表示“?”。不是实际查询字符串的一部分:

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

现在,让我们考虑两个URL:

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

它们是等同还是不同?

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

tl; dr:

  • ?不是查询组件的一部分。
  • 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?有一个空查询组件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将参数作为查询字符串或 url 的一部分传递?

从URL删除查询字符串作为PHP函数的一部分

如何在AngularJS应用程序中解码URL的查询字符串的一部分?

python-从查询结果中获取字符串的一部分

消除php中url字符串的最后一部分

如何从C#中的URL获取子字符串或字符串的一部分

.htaccess将URL最后一部分重定向到相同的URL查询字符串值?

.htaccess 规则匹配新 url 的一部分并用作旧 url 的查询字符串

Golang查询字符串作为查询的一部分

C在字符串中获取一部分字符串

在字符串数组中查找字符串的一部分

删除字符串的一部分

替换字符串的一部分

选择字符串的一部分

隔离字符串的一部分

反转字符串的一部分

在Azure API管理中,我可以将订阅密钥用作请求标头的一部分而不是查询字符串参数吗?

替换查询字符串的一部分

LINQ查询以匹配字符串的一部分(分数)

SQL查询以显示列中一部分字符串值

MySQL查询以查找字符串的一部分是否不是数字

从ArrayList查询一部分字符串

如何将查询结果显示为字符串的一部分?

如何检查字符是否不是字符串中数字或 URL 的一部分?

字符串将url替换为javascript中相同url的一部分

如何使用$ _SERVER ['QUERY_STRING']捕获网址中查询字符串的一部分

C#中的MSSQL查询,从字符串获取WHERE子句的一部分

我可以只释放一部分字符串吗?

JSON解码仅解码JSON字符串的一部分吗?