-
URI
(标识、定位任何资源的字符串)
编辑
在电脑术语中,统一资源标识符(Uniform
Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。 该种标识容许用户对任何(包括本地和互联网)的资源经过特定的协议进行交互操做。URI由包括肯定语法和相关协议的方案所定义。
Web上可用的每种资源 -
HTML文档、图像、视频片断、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
-
中文名
-
统一资源标识符
-
外文名
-
Uniform
Resource Identifier
-
简 称
-
URI
-
应 用
-
万维网
URI通常由三部分组成:
存放资源的自身的名称,由路径表示。
参考下面的URI,它符合当前的RFC4395规范:协议名称://域名.根域名/目录/文件名.后缀
例如http://b.c/d/e.f (假设b.c是一个可用的
域名,e.f是一个标准的文件)
这个URI是这样的:这是一个可经过
HTTP协议访问的资源,位于
主机b.c上,经过URI中的字符串“/d”访问主机上的“d”文件夹,经过“e.f”请求访问主机上“/d/e.f”这个文件。
这是URI的另外一个例子,指向一个用户的邮箱:mailto:名称@域名
注:大多数读者可能熟悉"URL",而不是URI。URL是URI命名机制的一个子集。
2、标志符
有的URI指向一个资源的内部。 这种URI以"#"结束,并跟着一个
anchor标志符(称为片断标志符)。例如,下面是一个指向section_2的URI:
协议://域名/目录/文件#片断标示符(例如:/a/b.php#a)
3、相对URI
相对URI不包含任何命名规范信息。它的路径一般指同一台机器上的资源。相对URI可能含有
相对路径(如,“..”表示上一层路径),还可能包含片断标志符。
为了说明相对URI,假设咱们有一个基本的URI:
协议://域名/目录a/目录b/文件c
下面的连接中使用了相对URI:
../文件D
它扩展成彻底的URI就是 "协议://域名/目录a/文件D",
下面是一个图像的相对URI:
<IMG src="../icons/logo.gif" alt="logo">
它扩展成彻底的URI就是 "协议://域名/目录a/icons/logo.gif"。
在HTML中,URI被用来:
连接到另外一个文档或资源(参看A和LINK元素)。
连接到一个外部样式表或脚本(参看LINK和
SCRIPT元素)。
指向一个描述文档的metadata(参看
HEAD元素)。
URL是Uniform Resource Locator的缩写,译为“
统一资源定位符”。
◇ URL的格式
URL的格式由下列三部分组成:
第一部分是协议(或称为服务方式);
第二部分是存有该资源的
主机IP地址(有时也包括
端口号);
第三部分是主机资源的具体地址。,如目录和文件名等。
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺乏的,第三部分有时能够省略。
◇ URL示例
文件的URL:
用URL表示文件时,
服务器方式用file表示,后面要有
主机IP地址、文件的存取路径(即目录)和文件名等信息。有时能够省略目录和文件名,但“/”符号不能省略。
例:file://a:1234/b/c/d.txt
表明获取资源使用ftp协议,资源目标是a主机的1234端口的b目录下的c目录下的d.txt。
HTTP的 URL已经在URI的组成中作过示范,在此再也不陈述。
URI、URL和URN
URI :Uniform Resource Identifier,统一资源
标识符;
URL:Uniform Resource Locator,
统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
其中,
URL,URN是URI的子集。
Web上地址的基本形式是URI,它表明统一资源
标识符。有两种形式:
URL:目前URI的最广泛形式就是无处不在的URL或
统一资源定位器。
URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,而且有可能减小失效链接的个数。可是其流行还需假以时日,由于它须要更精密软件的支持。
URI是以某种统一的(标准化的)方式标识资源的简单字符串。
典型状况下,这种字符串以scheme(命名URI的名字空间的
标识符——一组相关的名称)开头,语法以下:
[scheme:] scheme-specific-part
URI以scheme和冒号开头。Scheme用大写/小写字母开头,后面为空或者跟着更多的大写/小写字母、数字、加号、减号和点号。冒号把scheme与scheme-specific-part分开了,而且scheme-specific-part的语法和语义(意思)由URI的名字空间决定。以下面的例子:
http://域名,其中http是scheme,//域名 是scheme-specific-part,而且它的scheme与scheme-specific-part被冒号分开了。
URI有绝对和相对之分,绝对的URI指以scheme(后面跟着冒号)开头的URI。前面提到的http://域名 就是绝对的URI的一个例子,其它的例子还有mailto:xxx@xxx.xx、news:地址和xyz://whatever。你能够把绝对的URI看做是以某种方式引用某种资源,而这种方式对
标识符出现的环境没有依赖。若是使用文件系统做类比,绝对的URI相似于从根目录开始的某个文件的径。
与绝对的URI不一样的,相对的URI不是以scheme(后面跟着冒号)开始的URI。 它的一个例子是articles/articles.html。你能够把相对的URI看做是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。若是用文件系统做类比,相对的URI相似于从当前目录开始的文件路径。
URL是Uniform Resource Location的缩写,译为"统一资源定位符"。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各类WWW客户程序和
服务器程序上,特别是著名的Mosaic。采用URL能够用一种统一的格式来描述各类信息资源,包括文件、服务器的地址和目录等。
目前最大的缺点是当信息资源的存放地点发生变化时,必须对URL做相应的改变。所以人们正在研究新的信息资源表示方法,例如:URI(Universal Resource Identifier)即"通用资源标识"(参见RFC 1630)、URN(Uniform Resource Name)即"统一资源名"和URC(Uniform Resource Citation)即"统一资源引用符"等。
URI还在进一步的研究当中。研究的方向就是弥补URL的缺点。
URI可被视为定位符(URL),名称(URN)或二者兼备。统一资源名(URN)如同一我的的名称,而
统一资源定位符(URL)表明一我的的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地址。
用于
标识惟一书目的ISBN系统是一个典型的URN使用范例。例如,ISBN 0486275574(urn:isbn:0-486-27557-4)无二义性地标识出莎士比亚的戏剧《罗密欧与朱丽叶》的某一特定版本。为得到该资源并阅读该书,人们须要它的位置,也就是一个URL地址。在类Unix操做系统中,一个典型的URL地址多是一个
文件目录,例如file:///home/username/RomeoAndJuliet.pdf。该URL
标识出存储于本地硬盘中的电子书文件。所以,URL和URN有着互补的做用。
技术观点
URL是
标识一个互联网资源,并指定对其进行操做或取得该资源的方法的URI。可能经过对主要访问手段的描述,也可能经过网络“位置”进行标识。例如一个URL,标识一个特定资源(首页)并表示该资源的某种形式(例如以编码
字符表示的,首页的HTML代码)是能够经过URL指定的网络
主机得到的。URN是基于某命名空间经过名称指定资源的URI。人们能够经过URN来指出某个资源,而无需指出其位置和得到方式。资源无需是基于互联网的。例如,URN urn:isbn:0-395-36341-1 指定标识系统(即国际标准书号ISBN)和某资源在该系统中的惟一表示的URI。它能够容许人们在不指出其位置和得到方式的状况下谈论这本书。
技术刊物,特别是IETF和W3C发布的标准中,基本再也不使用“URL”这一术语,由于不多须要区别URL和URI。可是,在非技术文献和万维网软件中,URL这一术语仍被普遍使用。此外,术语“网址”在非技术文献中时常做为URL或URI的同义词出现,虽然每每其指代的只是“http”和“https”协议。
RFC 3305
关于URI的讨论多源于题目为《
W3C/IETF URI规划联合小组报告:统一
标识资源符(URI),URL和统一资源名(URN):阐明与建议》的RFC3305文件。这一RFC文件描述了一个,以统一W3C和IETF内部对于各类“UR*”术语之间关系的不一样见解为目的而设立的,W3C/IETF联合工做小组的工做。虽然未做为标准被这两个组织所发布,但该文件确立了上述种种共识,并就此催生了许多标准的诞生。
发展
URI与URL有着共同的历史。在1990年,Tim Berners-Lee的关于
超文本的提案间接地引入了使用URL做为一个表示
超连接目标资源的短字符串的概念。当时,人们称之为“超文本名”或“文档名”。
在以后的三年半中,因为万维网的HTML(
超文本标记语言)核心技术、HTTP与浏览器都获得了发展,区别提供资源访问和资源标记的两种字符串的必要性开始显现。虽然其时还没有被正式定义,但“
统一资源定位符”这一术语开始被用于表明前者,然后者则由“统一资源名称”所表示。
在关于定义URL和URN的争论中,人们注意到二者事实上基于同一个基础的“资源
标识”的概念。在1994年6月,IETF发布了Berners-Lee的RFC 1630,(非正式地)指出了URL和URN的存在,并进一步定义了“通用资源
标识符”——语义和语法由具体协议规定的类URL字符串的规范文法。此外,该RFC文档亦尝试定义了其时正被使用着的URL协议的文法,同时指出(但并未标准化)了相对URL和片断标识符的存在。
标准改良
1994年12月,RFC 1738 正式定义了绝对和相对URL,改进了URL文法,定义了如何解析URL为绝对形式,并更加完善地列举了其时正处于使用中的URL协议。而URN定义和文法直到1997年5月RFC 2141公布后才正式统一。
1998年8月,随着RFC 2396的发表,URI文法造成了独立的标准,同时RFC 1630和1738中关于URI和URL的许多部分也获得了修订和增补。新RFC修改了“URI”中“U”的含义:它开始表明统一(Uniform)而再也不是通用(Universal)。RFC 1738中总结了既存URL协议的部分被移至另一篇独立文档中。IANA 保留着这些协议的注册信息,而RFC 2717首次描述了注册它们的流程。
在1999年12月,RFC 2732对RFC 2396进行了小幅更新,开始容许URI包括IPv6地址。一段时间之后,在两个标准中暴露出的一些问题促使了一系列的修订草案的发展,这些草案被统称为rfc2396bis。这一由RFC 2396的共同做者Roy Fielding引导协调的集体努力,由2005年1月RFC 3986的发布推至了顶峰。该RFC文档成为了现今(2009年)于互联网上被推荐使用的URI文法版本,并使得RFC 2396成为了历史。然而,它却并未替代现有的URL协议细节;RFC 1738继续管辖着大多数协议,除了某些已被它取而代之的场合——例如被RFC 2616改良的”HTTP”协议等。与此同时,IETF发布了RFC 3986,亦即完整的STD 66标准,
标识着URI通用文法正式成官方
因特网协议。
在2002年8月,RFC 3305指出,虽然术语“URL”仍被普遍地用于平常用语之中,但其自己已几乎被废弃。其功用,仅是做为对于某些URI因包含某种指示着网络可达性的协议而做为地址存在的提醒而已。基于URI的众多标准,例如资源描述框架等,已经清楚地代表,资源标识本无需指出经过互联网得到资源副本的方法,亦无须指出资源是否基于网络。
在2006年2月,RFC 4395用了15页详细阐述了《关于新的URI方案的指导方针和登记程序》
[1]
在2006年11月1日,W3C技术架构小组公布了《链接替代副本使查找和发布可行化》,一个对于发布给定资源的多个版本的权威URI和其最佳实践的指导。例如,内容可能因用于访问资源的设备的支持性和设定不一样,而语言或大小上有所调整已适应这种差别。
与XML命名空间
XML拥有一个叫命名空间的,一个可包含元素集和属性名称的抽象域的概念。命名空间的名称(一个必须遵照通用URI文法的字符串)用于
标识一个XML命名空间。可是,命名空间的名称通常不被认为是一个URI,由于URI规范定义了字符串的“URI性”是根据其目的而不是其词法组成决定的。一个命名空间名称同时也并不必定暗示任何URI协议的语义;例如,一个以”http:”开头的命名空间名称极可能与HTTP协议没有任何关系。XML专家们就这一问题在XML开发
电子邮件列表上进行了深刻的辩论;一部分人认为命名空间名称能够是URI,因为包含一个具体命名空间的名称集能够被看做是一个被
标识的资源,也因为“XML中的命名空间”规范的一个版本指出过命名空间名称“是”一个URI引用。可是,集体共识彷佛指出一个命名空间名称只是一个凑巧看起来像URI的字符串,仅此而已。
早先,命名空间名称是能够匹配任何非空URI引用的语法的,但后来的一个对于“XML命名空间建议”的订正废弃了相对URI引用的使用。一个独立的、针对XML 1.1的命名空间的规范容许使用IRI引用做为命名空间名称的基准,而不只是URI引用。
为了消除XML新人中产生的对于URI(尤为是HTTP URL)的使用的困惑,一个被称为RDDL(资源目录描述语言)的描述语言被创建了,虽然RDDL的规范并无正式地位,也并无得到任何相关组织(例如W3C)的检查和支持。一个RDDL文档能够提供关于一个特定命名空间和使用它的XML文档的,机器与人类都能读懂的信息。XML文档的做者鼓励使用RDDL文档,这样一旦文档中的命名空间名称被索引,(系统)就会取得一个RDDL文档。这样,许多开发者对于让命名空间名称指向网络可达资源的需求就能获得知足。
-
参考资料
-
- 1. Adobe等5位撰写人. [RFC4395]Guidelines and Registration Procedures for New URI Schemes [S] 2006-2;