一个 URL、一个 URI 和一个 URN 的区别是什么?
当前回答
根據定義 URL 是 URI 的子集 [RFC2396]. URI 包含 URN 和 URL. 兩個 URI 和 URL 都有自己的特定的合成,這給他們的狀態是 URI 或 URL. URN 是為了獨特地識別一個資源,而 URL 是為了找到一個資源。
作为网页开发人员和程序员,我们将几乎总是关心URL,因此URI. 现在一个URL是具体定义的所有部分图表:图表特定的部分,如 https://stackoverflow.com/问答. 这是一个URL,也是一个URI. 现在考虑一个相对链接嵌入到页面,如../index.html. 这不再是一个URL的定义。
其他回答
原来,URI计划分为URL(地址)和URN(名称),但然后有一个URL和URI之间很少的差异,而HTTP URI被用作名称空间,尽管它们实际上没有找到任何资源。
从 RFC 3986:
“Uniform Resource Locator”(URL)是指URI的子组,除了识别资源之外,它还提供了通过描述其主要访问机制(例如,其网络的“位置”)来定位资源的手段。
因此,所有URL都是URI,所有URL都是URI,但URL和URL都是不同的,所以你不能说所有URL都是URL。
如果你还没有阅读罗杰·帕特的答案,我会建议你这样做。
最好的(技术)总结 imo 是这个一个
统一资源识别器是识别一个抽象或物理资源的字符的紧凑序列. 字符集仅限于US-ASCII 排除一些保留字符. 允许字符集之外的字符可以使用百分比编码来代表。
URL
IRI is a superset of URI (IRI ⊃ URI)
URI is a superset of URL (URI ⊃ URL)
URI is a superset of URN (URI ⊃ URN)
URL and URN are disjoint (URL ∩ URN = ∅)
关于Semantic Web问题的结论
对于已经发表的答案,这里有一个Venn的图表来总结理论(从Prateek Joshi的美丽解释):
此分類上一篇
还有一个例子(也来自Prateek的网站):
此分類上一篇
一个 URI 通过位置或名称识别一个资源,或者两者。 更常见的是,我们大多数人使用定义一个资源的位置的 URI. 事实上,一个 URI 可以通过名称和位置识别一个资源,在我看来导致了很多混乱。
URL 是 URI 的专业化,它定义了一个特定的资源的网络位置. 与 URN 不同,URL 定义了资源可以获得的方式. 我们每天使用 URL 以 http://stackoverflow.com 等的形式,但一个 URL 不必是一个 HTTP URL,它可以是 ftp://example.com 等。
推荐文章
- URL中的“#:~:text=”位置哈希值到底是什么?
- 什么是HTTP“主机”报头?
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- 如何从URL获取参数与JSP
- 如何阻止恶意代码欺骗“Origin”报头来利用CORS?
- 从URI获取真实路径,Android奇巧新的存储访问框架
- URL从Java中的类路径加载资源
- 为什么说“HTTP是无状态协议”?
- 我需要HTTP GET请求的内容类型报头吗?
- 单击url会打开默认浏览器
- 我如何得到一个Flask请求的url的不同部分?
- 用JavaScript检测文本中的url
- 如何让Chrome允许混合内容?
- 正确的方式删除cookies服务器端
- REST DELETE真的是幂等的吗?