URL、URN、URI区别
既然Web应用程序的文件等资源是放在服务器上,而服务器是因特网(Internet)上的主机,当然必须要有个方法,告诉浏览器到哪里取得文件等资源。通常会听到有人这么说:“你要指定URL”,偶尔会听到有人说:“你要指定URI”。那么到底什么是URL、URI?甚至你还听过URN。首先,三个名称都是缩写,其全名分别为:
- URL:Uniform Resource Locator
- URN:Uniform Resource Name
- URI:Uniform Resource Identifier
从历史的角度来看,URL的标准最先出现,早期U代表Universal(万用),标准化之后代表着Uniform(统一)。正如名称所指出,URL的主要目的,是一文字方式来说明因特网上的资源如何获得。一般而言,URL的主要格式为:
<协议>:<特定协议部分>
协议(scheme)指定了以何种方式取得资源。一些协议名的例子有:
- ftp(文件传输协议,File Transfer Protocol)
- http(超文本传输协议,Hypertext Transfer Protocol)
- mailto(电子邮件)
- file(特定主机文件名)
协议之后跟随冒号,特定协议部分的格式则为:
//<用户>:<密码>@<主机>:<端口号>/<路径>
举例来说,若资源放置在HTTP服务器上,如图1.2所示:
若主机名为 openhome.cc,要以HTTP协议取得 Gossip 目录中的 index.html文件,端口号 8080,则必须使用以下URL(如图 1.3所示):
http://openhome.cc:8080/Gossip/index.html
又假设想取得计算机文件系统中 C:workspace 下的jdbc.pdf 文件,则可以指定如下URL格式:
file://C:/workspace/jdbc.pdf
简而言之,URL代表资源的地址信息,URN则代表某个资源独一无二的名称。举个例子来说,“JSP&Servlet学习笔记(第2版)”的国家标准书号(International Standard Book Number,ISBN)为 ISBN 978-7-302-28366-9,这就是URN的一个例子。
由于URL或URN的目的,都是用来标识某个资源,后来的标准指定了URI,而URL与URN成为URI的子集。在一些标准机构,如W3C(World Wide Web Consortium)文件中,后来就也多使用URI这个名词,不过许多人已习惯用URL,所以URL这个名词仍广为使用,程序员口语交谈也多见使用URL这个旧称。
如果想对URL、URI 与 URN 的历史演进与标准发布作更多的了解,可以参考Wikipedia(http://www.wikipedia.org/)的Uniform Resource Identifier: