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
)是用于在互联网上标识名称或资源的一串字符。
URI通过位置、名称或两者同时来标识资源。 URI有两个特殊的专业术语,即URL和URN。
统一资源定位符(URL
)是统一资源标识符(URI)的子集,指定标识资源的位置以及检索该资源的机制。 URL定义如何获取资源。 它不必是HTTP URL(http://
),URL也可以以ftp://
或smb://
开头,指定用于获取资源的协议。
统一资源名称(URN
)是使用URN方案的统一资源标识符(URI),并且不意味着已经存在该标识的资源。 URN(名称)和URL(定位器)都是URI,一个特定的URI可能同时是名称和定位器。
此图表(source)可视化了URI、URN和URL之间的关系:
URN是互联网信息体系结构的一部分,由URN、URCs和URL组成。
bar.html不是URN。URN类似于人的名字,而URL类似于街道地址。URN定义了某物的身份,而URL提供了位置。本质上,URN与URL之间是“什么”与“在哪里”的关系。URN必须具有以下形式:<URN> ::= "urn:" <NID> ":" <NSS>
其中<NID>
是命名空间标识符,<NSS>
是命名空间特定字符串。
换句话说:
我认为唯一需要做的就是举一个不是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)
urn:isbn:0-486-27557-4
是莎士比亚戏剧《罗密欧与朱丽叶》的一个特定版本的标识符,实际上是一个“URN”(因此是“URI”),但不是一个“URL”。 - Stefan Gehrigtel
的例子并不完美,因为有人可能会认为它实际上是一个URL(即使它在常见的受互联网影响的领域并不是一个URL)。 - Stefan Gehrigjavascript:alert(123);
是URI还是URL? - Preco Plusb以下是我对Prateek Joshi所做的精彩解释的总结:
理论:
即:
例如:
此外,如果您还没有阅读过Roger Pate的回答,我建议您阅读一下。
包含如何从其位置获取资源的信息。例如:
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 的上下文中有用)URLs 总是以协议 (http
) 开始,通常包含网络主机名(example.com
)和文档路径(/foo/mypage.html
)等信息。URLs 可能有查询参数和片段标识符。
通过名称标识资源。它总是以前缀urn:
开头,例如:
urn:isbn:0451450523
通过ISBN号码来标识书籍urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
全球唯一标识符urn:publishing:book
- 用于标识文档作为书籍类型的XML命名空间。URNs可以标识思想和概念,不仅限于标识文档。当 URN 确实代表文档时,它可以通过 "解析器" 转换为 URL。然后可以从该 URL 下载文档。
包括 URL、URN 和其他指示资源的方式。
一个既不是URL也不是URN的URI示例是数据URI,例如data:,Hello%20World
。它不是URL或URN,因为URI包含数据,既不命名数据,也不告诉你如何在网络上定位它。
还有一种统一资源引用(URC),它指向文档的元数据而不是文档本身。URC的示例是指示查看网页源代码的指示器:view-source:http://example.com/
。URC是另一种既不是URL也不是URN的URI类型。
HTML的w3规范表示,锚标签的href
可以包含URI,而不仅仅是URL。您应该能够放置一个URN,例如<a href="urn:isbn:0451450523">
。然后,您的浏览器将会将该URN解析为URL并为您下载该书。
据我所知,没有,但现代Web浏览器确实实现了数据URI方案。
好问题。我看到很多网站都说这是真的。我没有找到任何既是URL又是URN的例子。我不明白如何可能,因为URN以urn:
开头,这不是有效的网络协议。
不是。相对路径和绝对路径均为URL(和URI)。
不是。无论是否具有查询参数,URL 都是 URL(也是 URI)。
不是。无论是否具有片段标识符,URL 都是 URL(也是 URI)。
tel:
URI 是 URL 还是 URN?例如 tel:1-800-555-5555
。它不以 urn:
开头,并且具有用于通过网络访问资源的协议。它必须是一个 URL。
是的。W3C 意识到这个问题存在很多混淆。他们发布了一个URI 澄清文档,表示现在可以交替使用 URL 和 URI。将 URI 严格分为不同类型,如 URL、URN 和 URC 等,已经没有用处了。
urn
方案,而https://www.google.com/
既是URL也是URN(它同时标识和定位Google Web搜索资源)。 - user539810tel:
不能帮助你定位资源。它明确告诉你,你可以通过传统的电话网络使用 PSTN 系统来访问它。与 http:
表示你可以使用纯文本 HTTP 和 DNS 服务访问它,https:
同样如此但是通过 TLS,而 mailto:
使用 SMTP。当你 点击 它或者你是否有能够处理呼叫或发送电子邮件的软件对于 URL 的语义完全无关。也许 tel:
的消费者是一个可以轻松处理它的自动呼叫系统。 - jbxftp://
和mailto://
都是URL,但它们无法通过HTTP访问。只有http
URL 可以。在“tel:”URL中的ID是电话号码,并且说它是“tel:”不仅限定了它,还指定了如何到达它(通过公共交换电话网拨打它)。我看不出“tel:”URL和例如“sip:”URL之间的区别。即使Microsoft也将其称为URL:https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms776001(v=vs.85) - jbx根据维基百科,URI(统一资源标识符)是用于标识资源的字符序列。
URI是用于标识资源的字符序列。
URL(统一资源定位符)是一种暗示与资源交互机制的URI。例如https://www.google.com指定使用HTTP作为交互机制。并非所有URI都需要传达特定于交互的信息。
URN(统一资源名称)是具有urn作为方案的特定形式的URI。有关URI的一般形式的更多信息,请参见https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax
IRI(国际资源标识符)是对URI定义的修订,允许我们在URI中使用国际字符。