URI,URL和URN有什么区别?我读了很多网站(甚至维基百科),但我不明白。
URI:http://www.foo.com/bar.html
网址:http://www.foo.com/bar.html
URN:bar.html
这是对的吗?
答案 0 :(得分:299)
统一资源标识符(URI
)是用于标识Internet上名称或资源的字符串
URI按位置或名称或两者标识资源。 URI有两种称为URL和URN的特殊化。
统一资源定位符(URL
)是统一资源标识符(URI)的子集,用于指定已识别资源的可用位置以及检索资源的机制。 URL定义了如何获取资源。它不必是HTTP URL(http://),URL也可以是(ftp://)或(smb://)。
统一资源名称(URN
)是使用URN方案的统一资源标识符(URI),并不意味着已识别资源的可用性。 URN(名称)和URL(定位符)都是URI,特定URI可以同时是名称和定位器。
URN是大型互联网信息架构的一部分,由URN,URC和URL组成。
bar.html不是URN 。 URN类似于人名,而URL就像街道地址。 URN定义了某些东西的身份,而URL则提供了一个位置。基本上,“什么”与“何处”。 URN必须是<URN> ::= "urn:" <NID> ":" <NSS>
形式,其中<NID>
是命名空间标识符,<NSS>
是命名空间特定字符串。
换句话说:
- URL是标识资源的URI,还提供了通过描述访问资源的方式来查找资源的方法
- 网址是URI
- URI不一定是网址
我要说的唯一让它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 (?)
同时检查一下 - https://quintupledev.wordpress.com/2016/02/29/difference-between-uri-url-and-urn/
答案 1 :(得分:101)
下面我总结Prateek Joshi's awesome explanation。
理论:
那是:
举个例子:
此外,如果您还没有,我建议您阅读Roger Pate's answer。
答案 2 :(得分:47)
包含有关如何从其位置获取资源的信息。例如:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:user@example.com
file:///home/user/file.txt
http://example.com/resource?foo=bar#fragment
/other/link.html
(相对网址,仅在其他网址的上下文中有用)网址始终以协议(http
)开头,通常包含网络主机名(example.com
)等信息,通常还包含文档路径(/foo/mypage.html
)。 URL可能包含查询参数和片段标识符。
按名称标识资源。它始终以前缀urn:
开头,例如:
urn:isbn:0451450523
按照ISBN编号识别图书。urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
全球唯一标识符urn:publishing:book
- 一个XML名称空间,用于将文档标识为一种书籍。URN可以识别想法和概念。它们不仅限于识别文件。当URN表示文档时,它可以通过“解析器”转换为URL。然后可以从URL下载该文档。
URI包含URL,URN和其他指示资源的方式。
既不是URL也不是URN的URI的示例是data URI,例如data:,Hello%20World
。它不是URL或URN,因为URI包含数据。它既没有命名,也没有告诉你如何通过网络找到它。
还有统一的资源引用(URC)指向文档的元数据而不是文档本身。 URC的示例将是用于查看网页的源代码的指示符:view-source:http://example.com/
。 URC是另一种既不是URL也不是URN的URI。
HTML的w3规范说href
of an anchor tag可以包含URI,而不仅仅是URL。您应该能够放入<a href="urn:isbn:0451450523">
等URN。然后,您的浏览器会将该URN解析为URL并为您下载该书。
我不知道,但现代网页浏览器确实实现了数据URI方案。
好问题。我在网上看到很多地方说这是真的。我无法找到任何既包含URL又包含URN的示例。我不知道它是如何可能的,因为URN以urn:
开头,这不是有效的网络协议。
没有。相对URL和绝对URL都是URL(和URI)。
没有。带有和不带查询参数的URL都是URL(和URI)。
没有。带有和不带有片段标识符的URL都是URL(和URI)。
tel:
URI是URL还是URN?例如tel:1-800-555-5555
。它不以urn:
开头,它具有通过网络到达资源的协议。它必须是一个URL。
是。 W3C意识到这有很多混乱。他们发布了URI clarification document,表示现在可以互换使用URL和URI。将URI严格分段为不同类型(如URL,URN和URC)不再有用。
答案 3 :(得分:2)
根据Wikipedia的URI(统一资源标识符):
用于标识资源的字符串。
URL (Uniform Resource Locator)是一个URI,它暗示了与资源的交互机制。例如https://www.google.com指定使用HTTP作为交互机制。并非所有URI都需要传达特定于交互的信息。
URN (Uniform Resource Name)是一种特定形式的URI,它有urn作为它的方案。有关URI的一般形式的更多信息,请参阅https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax
IRI (International Resource Identifier)是对URI定义的修订,允许我们在URI中使用国际字符。