【发布时间】:2013-04-02 16:04:39
【问题描述】:
根据RFC 3986 Section 3 - Syntax Components:
scheme 和 path 组件是必需的,尽管路径可能是 空(无字符)。
有人可以澄清如果路径组件可以为空,如何需要它?也许我在这种情况下误解了“必需”的定义,但我认为它的意思是“必须非空”,这显然与这里的规范相冲突。
【问题讨论】:
根据RFC 3986 Section 3 - Syntax Components:
scheme 和 path 组件是必需的,尽管路径可能是 空(无字符)。
有人可以澄清如果路径组件可以为空,如何需要它?也许我在这种情况下误解了“必需”的定义,但我认为它的意思是“必须非空”,这显然与这里的规范相冲突。
【问题讨论】:
在这里,“必需”仅表示“始终存在”:方案和路径 绝对 URI 的组成部分始终存在。
方案组件不能为空,因为生产 "scheme" 至少需要一个字符。
路径组件可以为空,因为产生式 “path-empty”(“hier-part”的一部分)由零个字符组成。
【讨论】:
一个空的常见实际示例 - 更准确地说,一个 abempty - 路径是一个类似于 http://stackoverflow.com 的 URI,其中路径为空。仅凭权限组件(在本例中为 stackoverflow.com)不足以识别资源。
当权限为空时,路径必须以/ 开头,以便将路径与权限区分开来 - scheme:/// 是有效的 URI - 因此是 abempty 路径。另请查看this answer 以进一步阅读。
【讨论】: