What is the difference between URI, URL and URN?
URI、URL和URN有什么区别?我读过很多网站(甚至维基百科),但我不明白。
网址:http://www.foo.com/bar.html网址:http://www.foo.com/bar.html瓮:巴尔
这是正确的吗?
统一资源标识符(
URI根据位置或名称或两者来标识资源。一个URI有两个专门化,即URL和URN。
统一资源定位器(
统一资源名(
URN是由URN、URC和URL组成的大型Internet信息体系结构的一部分。
bar.html不是urn。瓮类似于人的名字,而URL类似于街道地址。URN定义了某个对象的标识,而URL提供了一个位置。本质上,"什么"和"在哪里"。urn的格式必须是
换个说法:
- A URL is a URI that identifies a resource and also provides the means of locating the resource by describing the way to access it
- A URL is a URI
- A URI is not necessarily a URL
我想说,唯一能让它100%清晰的就是有一个不是URL的URI示例。我们可以使用RFC3986中的示例:
1 2 3 4 5 6 7 8 | 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:[email protected] 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/
下面我总结了Prateek Joshi的精彩解释。
理论:
- uri(统一资源标识符)标识资源(文本文档、图像文件等)
- URL(统一资源定位器)是包含网络位置的URI的子集
- URN(统一资源名称)是URI的子集,其中包含给定空间中的名称,但没有位置
即:
例如:
另外,如果你还没有,我建议你读一下罗杰·帕特的答案。
统一资源定位器
包含有关如何从其位置获取资源的信息。例如:
http://example.com/mypage.html ftp://example.com/download.zip mailto:[email protected] file:///home/user/file.txt http://example.com/resource?foo=bar#fragment /other/link.html (相对URL,仅在另一个URL上下文中有用)
URL总是以协议(
按名称标识资源。它总是以前缀
urn:isbn:0451450523 用ISBN号来标识一本书。urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 全球唯一标识符urn:publishing:book —一个XML命名空间,将文档标识为书籍类型。
URN可以识别想法和概念。它们不限于识别文件。当一个URN确实代表一个文档时,它可以被一个"解析器"转换成一个URL。然后可以从URL下载文档。
uri—统一资源标识符URI包含URL、URN和其他表示资源的方法。
URL既不是URL也不是URN的一个例子是一个数据URI,例如EDCOX1×13。它不是URL或URN,因为URI包含数据。它既不命名它,也不告诉你如何在网络上找到它。
也有统一的资源引用(URCS)指向文档的元数据,而不是文档本身。URC的一个示例将是查看网页源代码的指示器:EDCOX1(14)。URC是URL或URN都不是URI的另一种类型。
常见问题我听说我不应该再说URL了,为什么?HTML的W3规范说明,锚标签的EDCOX1 15的内容可以包含URI,而不只是URL。你应该能够把一个瓮,如
我不知道,但现代Web浏览器确实实现了数据URI方案。
一个URI可以同时是一个URL和一个URN吗?好问题。我在网上看到过很多地方说这是真的。我还没有找到任何既有URL又有URN的例子。我不明白这是怎么可能的,因为URN以
不是。相对和绝对URL都是URL(和URI)。
url和uri之间的区别与它是否有查询参数有关吗?不可以。带查询参数和不带查询参数的URL都是URL(和URI)。
URL和URI之间的区别与它是否具有片段标识符有什么关系?不可以。包含和不包含片段标识符的URL都是URL(和URI)。
例如
对。W3C意识到这一点有很多困惑。他们发布了一个URI澄清文档,说明现在可以交替使用URL和URI。将URI严格划分为不同类型(如URL、URN和URC)不再有用。
根据维基百科的统一资源标识符:
a string of characters used to identify a resource.
URL(统一资源定位器)是一个URI,表示与资源的交互机制。例如,https://www.google.com指定使用http作为交互机制。并非所有的URI都需要传递特定于交互的信息。
URN(统一资源名称)是一种特定形式的URI,其方案为URN。有关URI的一般形式的更多信息,请参阅https://en.wikipedia.org/wiki/uniform_resource_identifier语法。
IRI(InternationalResourceIdentifier)是对URI定义的修订,它允许我们在URI中使用国际字符。