URI、URL和URN之间有什么区别?我读过很多网站(甚至维基百科),但我不理解它。
URI:http://www.foo.com/bar.html
网址:http://www.foo.com/bar.html
URN: bar.html
这是正确的吗?
发布于 2011-02-06 20:46:49
统一资源标识符(URI)是用于标识因特网上的名称或资源的字符串。
URI通过位置和/或名称来标识资源。URI有两个称为和URN的专门化。
统一资源定位符(URL)是统一资源标识符(URI)的子集,它指定所标识的资源在何处可用以及用于检索该资源的机制。URL定义了如何获取资源。它不必是HTTP (http://),URL也可以以ftp://或smb://开头,指定用于获取资源的协议。
统一资源名称(URN)是使用URN方案的统一资源标识符(URI),并且并不意味着所标识的资源的可用性。URI (名称)和URI(定位符)都是URI,并且特定的URI可以同时是名称和定位符。
此图(source)可视化了URI、URN和URL之间的关系:

URN是由URN、URCs和URL组成的更大的互联网信息体系结构的一部分。
bar.html不是URN。URN类似于人名,而URL类似于街道地址。URN定义了某物的身份,而URL提供了一个位置。从本质上讲,URN is urs. URL是"what“is "where”。URN必须是这种形式的<URN> ::= "urn:" <NID> ":" <NSS>,其中<NID>是名称空间标识符,<NSS>是特定于名称空间的字符串。
换个说法就是:
我要说的是,剩下的唯一一件事就是让它100%清晰,那就是有一个不是URL的URI示例。我们可以使用RFC3986中的示例
URL: 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:John.Doe@example.com
URL: news:comp.infosystems.www.servers.unix
URL: telnet://192.0.2.16:80/
URN (not URL): urn:oasis:names:specification:docbook:dtd:xml:4.1.2
URN (not URL): tel:+1-816-555-1212 (disputed, see comments)发布于 2014-10-17 01:56:07
下面我总结一下Prateek Joshi's awesome explanation。
理论:
的URI的子集
这就是:

举个例子:

另外,如果你还没有读过,我建议你读一读Roger Pate's answer。
发布于 2015-03-05 05:52:39
URL -- Uniform Resource Locator
包含有关如何从资源的位置获取资源的信息。例如:
http://example.com/mypage.htmlftp://example.com/download.zipmailto:user@example.comfile:///home/user/file.txthttp://example.com/resource?foo=bar#fragment/other/link.html (相对网址,仅在另一个网址的上下文中有用)URL始终以协议(http)开头,通常包含网络主机名(example.com)等信息,通常还包含文档路径(/foo/mypage.html)。URL可以具有查询参数和片段标识符。
URN -- Uniform Resource Name
按名称标识资源。它始终以前缀urn:开头,例如:
通过其ISBN来标识图书的
urn:isbn:0451450523 number.urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66全球唯一的identifierurn:publishing:book -将文档标识为图书类型的XML命名空间。URN可以识别想法和概念。它们并不局限于识别文档。当URN表示文档时,可以通过“解析器”将其转换为URL。然后可以从URL下载该文档。
URI -- Uniform Resource Identifier
URI包括URL、URN和其他指示资源的方式。
既不是URL也不是URN的URI的一个例子是data:,Hello%20World之类的data URI。它不是URL或URN,因为URI包含数据。它既不会命名它,也不会告诉你如何在网络上定位它。
还有一些统一资源引用(URC)指向关于文档的元数据,而不是文档本身。URC的一个例子是用于查看网页源代码的指示器:view-source:http://example.com/。URC是另一种既不是URL也不是URN的URI。
常见问题
我听说我不应该再说URL了,为什么?
HTML规范规定href of an anchor tag可以包含URI,而不仅仅是w3。您应该能够放入像<a href="urn:isbn:0451450523">这样的骨灰盒。然后,您的浏览器会将该URN解析为一个URL,并为您下载图书。
有没有浏览器知道如何通过URN来获取文档?
据我所知没有,但现代的web浏览器确实实现了数据URI方案。
URI可以既是URL又是URN吗?
问得好。我在网上看到很多地方都说这是真的。我找不到任何既是URL又是URN的例子。我不明白这是怎么可能的,因为URN以urn:开头,这不是一个有效的网络协议。
URL和URI之间的区别是否与它是相对的还是绝对的有关?
不是的。相对URL和绝对URL都是URL(和URI)。
URL和URI之间的区别是否与它是否有查询参数有关?
不是的。带和不带查询参数的URL都是URL(和URI)。
URL和URI之间的区别是否与它是否具有片段标识符有关?
不是的。带和不带片段标识符的URL都是URL(和URI)。
URI是tel:还是URN?
例如tel:1-800-555-5555。它不是从urn:开始的,它有一个通过网络访问资源的协议。它必须是一个URL。
但是w3C现在不是说URL和URI是一回事吗?
是。W3C意识到这一点有很多困惑。他们发布了一个URI clarification document,声明现在可以互换使用URL和URI。严格地将URN划分为不同类型的URN不再有用,例如URL、URN和URC。
https://stackoverflow.com/questions/4913343
复制相似问题