URL 和 URI 究竟有什么区别呢?

2013-06-08 02:17:11 +08:00
 Livid
4895 次点击
所在节点    问与答
11 条回复
aveline
2013-06-08 02:21:06 +08:00
Sunyanzi
2013-06-08 02:21:53 +08:00
如果我说 you need google 会不会被封号 ..?

http://www.google.com/search?q=what+the+difference+between+URL+URI
itommy
2013-06-08 02:22:56 +08:00
@aveline 哈哈哈 我正在读同一篇讨论呢
xavierskip
2013-06-08 02:40:41 +08:00
翻了下http权威指南。

一个是标示符(Uniform Resource Identifier)。

一个是定位符( Uniform Resource Locator)。

URI 有两种形式,为URL和URN。

几乎所有的URI都是URL

我理解就是只有URN的存在,这两个的区别这种问题才有意义。
我从没见过URN。所以管他呢!
yyfearth
2013-06-08 09:10:59 +08:00
我记得URI包括URL,但是范围更广些,不过大多数情况下都是URL用的多
Loerise
2013-06-08 09:26:35 +08:00
soli
2013-06-08 09:30:11 +08:00
URI 唯一标识某一个资源;URL 唯一定位某一个资源。

"Livid@V2EX" 这个字符串能唯一标识你这个人,应该是 URI,但通过这个字符串找不到你,所以应该不是 URL;

"某国某区某市某街道某社区某楼某房间的某人" 这个字符串能唯一定位你这个人的位置,应该是 URL。

另外,唯一定位你这个人了,也就能唯一标识你这个人了。

所以,URL ⊂ URI 。
rrfeng
2013-06-08 09:35:52 +08:00
URI Standard (RFC3986) 在 1.1.3 小节“URI, URL, and URN”中澄清了这一区别:

URI 可以进一步分为定位器、名称,或者二者兼具。术语“Uniform Resource Locator” (URL) 涉及的是 URI 的子集,除识别资源外,它还通过描述其最初访问机制(比如它的网络“位置”)来提供定位资源的方法。 术语“Uniform Resource Name” (URN) 在历史上曾用于引用“urn”方案 [RFC2141] 下的 URI,这个 URI 需要是全球惟一的,并且在资源不存在或不再可用时依然保持不变,对于其他任何拥有名称的一些属性的 URI,都需要使用这样的 URI。
对于单独的方案,没有必要将其分为仅仅是一个 “名称”或者是一个“定位器”。 来自任意特定方案的 URI 实例可能有名称或定位器的特征,或两者兼而有之, 这通常取决于标识符分配中的持久性和命名机构对其关注程度, 而不取决于其他方案的质量。未来的规范和相关的文档应当使用通用术语“URI”,而不是使用有更多限制的条目“URL”和“URN” [RFC3305]。
davepkxxx
2013-06-08 10:17:11 +08:00
url: http://www.v2ex.com/t/71664
uri: /t/71664

个人认为是绝对定位和相对定位的区别,这点从JavaEE中HttpServletRequest的getRequestURI方法可以看出。
clowwindy
2013-06-08 11:06:50 +08:00
http://v2ex.com/ 带主机地址的属于 URL
电驴连接、BT 磁力链接,或者 urn:ietf:rfc:2648 这种跟资源存在的主机无关的标识符属于 URN

N = name
L = location
I = identifier
URI = URL + URN
hz251
2013-06-08 11:41:47 +08:00
URI = URL + URN

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX