URI、URL和URN之间的区别是什么?我读过很多网站(甚至维基百科),但我不懂。
URI: http://www.foo.com/bar.html URL: http://www.foo.com/bar.html URN: bar.html
这对吗?
URI、URL和URN之间的区别是什么?我读过很多网站(甚至维基百科),但我不懂。
URI: http://www.foo.com/bar.html URL: http://www.foo.com/bar.html URN: bar.html
这对吗?
当前回答
URI (Uniform Resource Identifier)是一串字符,用于在Internet上标识一个名称或资源。
URI通过位置或名称或两者来标识资源。URI有两种专门化,即URL和URN。
统一资源定位符(URL)是统一资源标识符(URI)的一个子集,它指定已标识的资源的可用位置以及检索它的机制。URL定义了如何获取资源。它不一定是HTTP URL (http://), URL也可以以ftp://或smb://开头,指定用于获取资源的协议。
统一资源名(URN)是一个使用URN方案的统一资源标识符(URI),并不意味着所标识的资源的可用性。urn(名称)和url(定位器)都是URI,特定的URI可以同时是名称和定位器。
这张图(源代码)可视化了URI、URN和URL之间的关系:
urn是更大的互联网信息架构的一部分,该架构由urn、urc和url组成。
html不是URN。URN类似于一个人的名字,而URL类似于街道地址。URN定义某物的身份,而URL提供位置。从本质上说,URN和URL就是“what”和“URL”。“在那里”。一个URN必须是这样的形式<URN>::= " URN:" <NID> ":" <NSS>其中<NID>是命名空间标识符,<NSS>是命名空间特定字符串。
换句话说:
URL是一种标识资源的URI,还通过描述访问资源的方式提供定位资源的方法 URL就是URI URI不一定是URL
我想说,唯一能让它100%清楚的是,有一个URI的例子,它不是URL。我们可以使用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)
其他回答
URI(统一资源标识符)根据维基百科:
用于标识资源的字符串。
URL(统一资源定位器)是一个包含与资源交互机制的URI。例如,https://www.google.com指定使用HTTP作为交互机制。并非所有uri都需要传递特定于交互的信息。
URN(统一资源名)是一种特定形式的URI,它的方案是URN。有关URI一般形式的更多信息,请参阅https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax
IRI(国际资源标识符)是对URI定义的修订,允许我们在URI中使用国际字符。
URI (Uniform Resource Identifier)是一串字符,用于在Internet上标识一个名称或资源。
URI通过位置或名称或两者来标识资源。URI有两种专门化,即URL和URN。
统一资源定位符(URL)是统一资源标识符(URI)的一个子集,它指定已标识的资源的可用位置以及检索它的机制。URL定义了如何获取资源。它不一定是HTTP URL (http://), URL也可以以ftp://或smb://开头,指定用于获取资源的协议。
统一资源名(URN)是一个使用URN方案的统一资源标识符(URI),并不意味着所标识的资源的可用性。urn(名称)和url(定位器)都是URI,特定的URI可以同时是名称和定位器。
这张图(源代码)可视化了URI、URN和URL之间的关系:
urn是更大的互联网信息架构的一部分,该架构由urn、urc和url组成。
html不是URN。URN类似于一个人的名字,而URL类似于街道地址。URN定义某物的身份,而URL提供位置。从本质上说,URN和URL就是“what”和“URL”。“在那里”。一个URN必须是这样的形式<URN>::= " URN:" <NID> ":" <NSS>其中<NID>是命名空间标识符,<NSS>是命名空间特定字符串。
换句话说:
URL是一种标识资源的URI,还通过描述访问资源的方式提供定位资源的方法 URL就是URI URI不一定是URL
我想说,唯一能让它100%清楚的是,有一个URI的例子,它不是URL。我们可以使用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)
下面我总结了Prateek Joshi的精彩解释。
理论:
URI(统一资源标识符)标识一个资源(文本文档、图像文件等) URL(统一资源定位器)是包含网络位置的uri的子集 URN(统一资源名)是uri的子集,在给定空间中包含名称,但不包含位置
那就是:
举个例子:
另外,如果你还没想好,我建议你读一读罗杰·佩特的回答。
URL——统一资源定位器
包含有关如何从其位置获取资源的信息。例如:
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,只在另一个URL的上下文中有用)
url总是以协议(http)开头,通常包含诸如网络主机名(example.com)和文档路径(/foo/mypage.html)等信息。url可能有查询参数和片段标识符。
URN—统一资源名
通过名称标识资源。它总是以前缀urn开头。例如:
urn:isbn:0451450523以isbn编号识别图书。 Urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66全局唯一标识符 urn:publishing:book—将文档标识为图书类型的XML名称空间。
骨灰盒可以识别想法和概念。他们不局限于识别文件。当一个URN确实表示一个文档时,它可以通过“解析器”转换成一个URL。然后可以从URL下载文档。
URI——统一资源标识符
uri包括url、urn和其他表示资源的方式。
既不是URL也不是URN的URI的一个例子是数据URI,例如data:,Hello%20World。它不是URL或URN,因为URI包含数据。它既不命名,也不告诉您如何通过网络定位它。
还有一些统一资源引用(uniform resource citation, urc)指向关于文档的元数据,而不是文档本身。URC的一个例子是用于查看网页源代码的指示器:view-source:http://example.com/。URC是另一种既不是URL也不是URN的URI类型。
常见问题
我听说我不应该再用URL了,为什么?
HTML的w3规范规定,锚标记的href可以包含URI,而不仅仅是URL。您应该能够放入一个URN,例如<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)。
tel: URI是URL还是URN?
例如,电话:1-800-555-5555。它不是以urn开头的:它有一个通过网络访问资源的协议。它必须是一个URL。
但是w3C现在不是说url和uri是一回事吗?
是的。W3C意识到这方面存在大量的混淆。他们发布了一个URI澄清文件,说现在可以互换使用URL和URI。将uri严格划分为不同类型(如URL、URN和URC)已不再有用。