URL和URI的区别

摘自:《HTTP权威指南》


1.3 资源

Web 服务器是 Web 资源(Web resource)的宿主。Web 资源是 Web 内容的源头。最简单的 Web 资源就是 Web 服务器文件系统中的静态文件。这些文件可以包含任意内容:文本文件、 HTML 文件、微软的 Word 文件、 Adobe 的 Acrobat 文件、 JPEG 图片文件、 AVI 电影文件,或所有其他你能够想到的格式。

但资源不一定非得是静态文件。资源还可以是根据需要生成内容的软件程序。这些动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。它们可以为你显示照相机中活生生的照片,也可以帮你进行股票交易,搜索房产数据库,或者从在线商店中购买礼物(参见图 1-2)。

图 1-2 所有能够提供 Web 内容的东西都是 Web 资源

总之,所有类型的内容来源都是资源。包含公司销售预测电子表格的文件是一种资源。扫描本地公共图书馆书架的 Web 网关是一种资源。因特网搜索引擎也是一种资源。

1.3.1 媒体类型

因特网上有数千种不同的数据类型,HTTP 仔细地给每种要通过 Web 传输的对象都打上了名为 MIME 类型(MIME type)的数据格式标签。最初设计 MIME (Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME 在电子邮件系统中工作得非常好,因此 HTTP 也采纳了它,用它来描述并标记多媒体内容。

Web 服务器会为所有 HTTP 对象数据附加一个 MIME 类型(参见图 1-3)。当 Web 浏览器从服务器中取回一个对象时,会去查看相关的 MIME 类型,看看它

是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化 HTML 文件、通过计算机声卡播放音频文件,或者运行外部插件软件来处理特殊格式的数据。

图 1-3 与数据内容一同回送的 MIME 类型

MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。

  • HTML 格式的文本文档由 text/html 类型来标记。
  • 普通的 ASCII 文本文档由 text/plain 类型来标记。
  • JPEG 格式的图片为 image/jpeg 类型。
  • GIF 格式的图片为 image/gif 类型。
  • Apple 的 QuickTime 电影为 video/quicktime 类型。
  • 微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型。

常见的 MIME 类型有数百个,实验性或用途有限的 MIME 类型则更多。附录 D 提供了一个非常完整的 MIME 类型列表。

1.3.2 URI

每个 Web 服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier, URI)。URI 就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。

这是 Joe 的五金商店的 Web 服务器上一个图片资源的 URI:

http://www.joes-hardware.com/specials/saw-blade.gif

图 1-4 显示了 URI 是怎样指示 HTTP 协议去访问 Joe 商店服务器上的图片资源的。给定了 URI,HTTP 就可以解析出对象。URI 有两种形式,分别称为 URL 和 URN。现在我们分别来看看这些资源标识符类型。

1.3.3. URL

统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。图 1-4 显示了 URL 如何精确地说明某资源的位置以及如何去访问它。表 1-1 显示了几个 URL 实例。

表 1-1 URL实例

URL 描  述
http://www.oreilly.com/index.html O’Reilly & Associates 公司的主URL
http://www.yahoo.com/images/logo.gif Yahoo! 的Web 站点标志URL
http://www.joes-hardware.com/inventory-check.cgi?item=12731 一个查看库存条目#12731 是否有现货的程序的URL
ftp://joe:[email protected]/lockingpliers.gif 以密码保护的FTP 作为访问协议的lockingpliers.gif 图片文件的URL

大部分 URL 都遵循一种标准格式,这种格式包含三个部分。

  • URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是 HTTP 协议(http://)。
  • 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
  • 其余部分指定了 Web 服务器上的某个资源(比如,/specials/saw-blade.gif)。

现在,几乎所有的 URI 都是 URL。

1.3.4. URN

URI 的第二种形式就是统一资源名(URN)。URN 是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的 URN,就可以将资源四处搬移。通过 URN,还可以用同一个名字通过多种网络访问协议来访问资源。

比如,不论因特网标准文档 RFC 2141 位于何处(甚至可以将其复制到多个地方),都可以用下列 URN 来命名它:

urn:ietf:rfc:2141

URN 仍然处于试验阶段,还未大范围使用。为了更有效地工作,URN 需要一个支撑架构来解析资源的位置。而此类架构的缺乏也延缓了其被采用的进度。但 URN 确实为未来发展作出了一些令人兴奋的承诺。我们将在第 2 章较为详细地讨论 URN,而本书的其余部分讨论的基本上都是 URL。

除非特殊说明,否则本书的其余部分都会使用约定的术语,并且会不加区别地使用 URI 和 URL。