首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URI、URL和URN有什么区别?

问URI、URL和URN有什么区别?
EN

Stack Overflow用户
提问于 2011-02-06 20:40:31
回答 4查看 324.1K关注 0票数 305

URI、URL和URN之间有什么区别?我读过很多网站(甚至维基百科),但我不理解它。

URI:http://www.foo.com/bar.html

网址:http://www.foo.com/bar.html

URN: bar.html

这是正确的吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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>是特定于名称空间的字符串。

换个说法就是:

  • URL是标识资源的URI,还通过描述资源的访问方式提供定位资源的方法
  • URL是URI
  • URI不一定是URL

我要说的是,剩下的唯一一件事就是让它100%清晰,那就是有一个不是URL的URI示例。我们可以使用RFC3986中的示例

代码语言:javascript
复制
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)
票数 392
EN

Stack Overflow用户

发布于 2014-10-17 01:56:07

下面我总结一下Prateek Joshi's awesome explanation。

理论:

  • URI (统一资源标识符)标识资源(文本文档、图像文件等)
  • URI(统一资源定位器)是包含网络位置的URI的子集
  • URN(统一资源名称)是包含给定空间内的名称但不包含location

的URI的子集

这就是:

​

​

举个例子:

​

​

另外,如果你还没有读过,我建议你读一读Roger Pate's answer。

票数 142
EN

Stack Overflow用户

发布于 2015-03-05 05:52:39

URL -- Uniform Resource Locator

包含有关如何从资源的位置获取资源的信息。例如:

  • 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 (相对网址,仅在另一个网址的上下文中有用)

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全球唯一的identifier
  • urn: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。

票数 81
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4913343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档