URI、URL和URN之间有什么区别?

人们谈论URLs、URIs和URNs,好像它们是不同的东西,但它们在肉眼看来是一样的。

它们之间有什么明显的区别呢?

解决办法

来自RFC 3986

一个URI可以进一步分类为一个定位器、一个名称或两者。 术语 术语"统一资源定位器"(URL)指的是URI的一个子集。 的子集,它除了识别一个资源外,还提供了一种通过描述资源的定位方法 统一资源定位器是指URI的一个子集,它除了识别资源外,还通过描述资源的主要访问机制,提供了一种定位该资源的方法 (例如,其网络位置)。 术语"统一资源名称" (URN)在历史上一直被用来指代URI下的 "urn"方案下的URI [RFC2141],它们被要求保持全球唯一的 即使资源不再存在或变得不可用,也要保持全球唯一和持久。 以及任何其他具有名称属性的URI。

因此,所有的URL都是URI(实际上不完全是--见下文),所有的URN都是URI--但是URN和URL是不同的,所以你不能说所有的URI都是URL。

编辑:我之前认为所有的URL都是有效的URI,但根据评论。

不是 "所有URL都是URI"。这取决于对RFC的解释。例如,在Java中,URI解析器不喜欢[],这是因为规范说的是"不应该",而不是"不应"。

因此,不幸的是,这使水变得更加混浊。

如果你还没有读过Roger Pate'的回答,我建议你也这么做。

评论(20)

它们是同一回事。URI是对URL的一种概括。最初,URI被计划分为URL(地址)和URN(名称),但后来URL和URI之间没有什么区别,http URIs被用作命名空间,尽管它们实际上并不能定位任何资源。

评论(4)

维基百科会在这里给出你需要的所有信息。援引自http://en.wikipedia.org/wiki/URI。

URL是一个URI,除了识别一个资源外,还通过描述资源的主要访问机制或网络"位置",提供对该资源采取行动或获得其代表的手段。

评论(0)