定义
这两个缩写乍一眼看几乎没有区别,仔细看才发现原来有一个横杠的区别,实际上在开发的过程中这两个的概念也经常被混淆。先看下英语的全称:
- URL- Uniform Resource Location(统一资源定位符)
- URI - Uniform Resource Identifier(统一资源标识符)
嗯……依然看不出区别。
言归正传,这三个词都起源于RFC 3986: Uniform Resource Identifier (URI): Generic Syntax的文档中定义的互联网标准追踪协议1。官方定义,统一资源标识符(URI)提供了一个简单、可扩展的资源标识方式。
区别
除了URI,URL,还有一个没怎么听过的URN也参与其中来混淆你。
- URN - Uniform Resource Name(统一资源名称)
先明确一个概念,URI 是用于标识Internet上的名称或资源的字符串,它可以按照位置,名称或者位置加名称来标识资源。借用一张图看看他们之间的关系1:
- URL和URN是URI 的两个特例。
- URL是使用位置来标识资源的一种URI,用于标识资源的可用位置以及资源获取方式(e.g.,
http://
,ftp://
)。 - URN是使用名称来标识资源的一种URI,但并不意味着标识的资源一定可用。
一些例子对比下2理解的更清楚:
URL: http://www.ietf.org/rfc/rfc2396.txt
URL: ftp://ftp.is.co.za/rfc/rfc1808.txt
URL: mailto:John.Doe@example.com
URN: urn:oasis:names:specification:docbook:dtd:xml:4.1.2
URN: isbn:0-486-27557-4
URI: data:,Hello%20World
总而言之,当你不知道叫什么的时候,叫uri总是不会错的。