URL 中第一个斜杠是强制性的吗?
Does first slash is compulsory in URL?
今天我们与同事争论这是否有效 URL http://domain.com?some_param=1
。定义 URL 结构的 RFC 没有明确声明这是无效结构。根据 RFC 1738,第 3.3 部分
If neither <path> nor <searchpart> is present, the "/" may also be omitted.
但是,在同一文档第 3.1 部分的末尾,它说
Note that the "/" between the host (or port) and the url-path is NOT part of the url-path.
检查 curl 发现了一些有趣的事情
$ curl -v -I http://whosebug.com?test
* Rebuilt URL to: http://whosebug.com/?test
...
所以,问题是
这是否有效 URL? http://domain.com?some_param=1
第 3.3 节针对 host
和 port
遵循第 3.1 节,但其余部分如该节中所定义。因此,如果存在 path
或 searchpart
,则 port
后的斜杠是必需的。
尽管如此,工具可能会尝试提取有效的 URL,即使省略了这个斜杠,因为各种意识形态的戒律之一是输入自由,输出保守。
今天我们与同事争论这是否有效 URL http://domain.com?some_param=1
。定义 URL 结构的 RFC 没有明确声明这是无效结构。根据 RFC 1738,第 3.3 部分
If neither <path> nor <searchpart> is present, the "/" may also be omitted.
但是,在同一文档第 3.1 部分的末尾,它说
Note that the "/" between the host (or port) and the url-path is NOT part of the url-path.
检查 curl 发现了一些有趣的事情
$ curl -v -I http://whosebug.com?test
* Rebuilt URL to: http://whosebug.com/?test
...
所以,问题是
这是否有效 URL? http://domain.com?some_param=1
第 3.3 节针对 host
和 port
遵循第 3.1 节,但其余部分如该节中所定义。因此,如果存在 path
或 searchpart
,则 port
后的斜杠是必需的。
尽管如此,工具可能会尝试提取有效的 URL,即使省略了这个斜杠,因为各种意识形态的戒律之一是输入自由,输出保守。