?这里有许多经典的高科技的辩论,以及什么正式调用Web地址的问题是最细致入微的一个。这通常表现的方式是有人要求将“URL”放入他或她的浏览器中,并且有人为此付出了代价,
实际上,这被称为URI,而不是URL ......
对这种矫正的反应可以是悄悄地认为这个人需要更多地出来,通过肩膀耸肩无动于衷地同意去除Katana上的安全扣。本页希望作为一个简单的单页摘要,用于浏览本次辩论的微妙之处。
URI,URL,URN
如上图所示,这里有三个不同的组件。在讨论这些问题时,通常最好去消息来源,所以这里是Tim Berners-Lee等人的摘录。人。在rfc 3986中:统一资源标识符(uri):通用语法:
统一资源标识符(URI)是一种紧凑的字符序列,用于标识抽象或物理资源。
URI可以进一步分类为定位符,名称或两者。术语“统一资源定位符”(URL)指的是URI的子集,其除了标识资源之外,还通过描述其主要访问机制(例如,其网络“位置”)来提供定位资源的手段。
可以将URI分类为定位符(URL),或将名称(URN)分类,或同时分类。统一资源名称(URN)的功能类似于人名,而统一资源定位符(URL)类似于该人的街道地址。换句话说:URN定义了项目的标识,而URL提供了查找项目标识的方法。
所以我们从这些描述中得到了一些东西:
- 首先(我们在图中也看到)URL是一种URI。因此,如果有人告诉您URL不是URI,那他就错了。但这并不意味着所有URI都是URL。所有的蝴蝶都飞了,但不是苍蝇都是蝴蝶。
- 使URI成为URL的部分包括“访问机制”或“网络位置”,例如
http://
或ftp://
。 - URN是识别中“全球唯一”的一部分; 这是一个独特的名字。
那么让我们再看一下URI的一些例子 - 再次来自RFC:
ftp://ftp.is.co.za/rfc/rfc1808.txt
(因为协议也是一个URL)http://www.ietf.org/rfc/rfc2396.txt
(因为协议也是一个URL)ldap://[2001:db8::7]/c=GB?objectClass?one
(因为协议也是一个URL)mailto:[email protected]
(因为协议也是一个URL)news:comp.infosystems.www.servers.unix
(因为协议也是一个URL)tel:+1-816-555-1212
telnet://192.0.2.16:80/
(因为协议也是一个URL)urn:oasis:names:specification:docbook:dtd:xml:4.1.2
这些都是URI,其中一些是URL。哪些是网址?那些告诉你如何到达他们的人。同样,名称与地址类比很好。
哪个更准确?
所以这给我们带来了许多读者的问题:
在提到网址时,哪个更合适?
基于我在研究这篇文章时阅读的十几篇文章和RFC,我会说这取决于一个非常简单的事情:你是完整的还是只是一件。
为什么?
好吧,因为我们经常在技术上不符合URL的表单中使用URI。例如,您可能会被告知您需要的文件位于files.hp.com
。这是一个URI,而不是一个URL - 该系统可能很好地响应许多端口上的许多协议。
如果你去,http://files.hp.com
你可以想象得到的内容与你去的完全不同ftp://files.hp.com
。而这类事情只会越来越普遍。想想生活在各种Google域上的所有不同服务。
因此,如果您使用URI,那么技术上总是正确的,如果您使用URL,则可能不是。
但是如果你肯定在处理实际的完整URL,那么“URL”是最准确的,因为它是最具体的。人类在技术上是非洲猿,狗是哺乳动物,但我们分别称它们为人类和狗。如果你是来自旧金山的美国人,而你在波士顿遇到来自悉尼的人,你就不会说你来自地球,或来自美国。你会说加州,或者更好 - 旧金山。
因此,直到某些内容发生变化,当您仅通过名称或其他片段引用资源时,最好使用URI。当您同时提供资源的名称和访问它的方法(如完整的URL)时,最好将其称为URL。
概要
- URI是标识符,可以表示名称,位置或两者。
- 所有URN和URL都是URI,但事实恰恰相反。
- 创建URL的部分是名称和访问方法的组合,例如
https://
,或mailto:
。 - 所有这些位都是URI,所以说这在技术上总是准确的,但是如果你正在讨论一个完整的URL和一个URI(所有的URL都是),那么最好把它称为“URL”,因为它更具体。