URL
统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。
大部分 URL 都遵循一种标准格式,这种格式包含三个部分
- URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这 部分通常就是 HTTP 协议(http://)
- 第二部分给出了服务器的因特网地址(比如,www.baidu.com)
- 其余部分指定了 Web 服务器上的某个资源
URN
URI 的第二种形式就是统一资源名(URN)。URN 是作为特定内容的唯一名称使用 的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
URN 仍然处于试验阶段,还未大范围使用。为了更有效地工作,URN 需要一个支 撑架构来解析资源的位置。而此类架构的缺乏也延缓了其被采用的进度。但 URN 确实为未来发展作出了一些令人兴奋的承诺。我们将在第 2 章较为详细地讨论 URN,而本书的其余部分讨论的基本上都是 URL。
除非特殊说明,否则本书的其余部分都会使用约定的术语,并且会不加区别地使用 URI 和 URL
事物
我们来更仔细地看看客户端是怎样通过 HTTP 与 Web 服务器及其资源进行事务处理 的。一个 HTTP 事务由一条(从客户端发往服务器的)请求命令和一个(从服务器 发回客户端的)响应结果组成。这种通信是通过名为 HTTP 报文(HTTP message) 的格式化数据块进行的
方法
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每 条 HTTP 请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取 一个 Web 页面、运行一个网关程序、删除一个文件等)。表 1-2 列出了五种常见的 HTTP 方法
HTTP方法 | 描述 |
---|---|
GET | 从服务器向客户端发送命名资源 |
POST | 将来自客户端的数据存储到一个命名的服务器资源中去 |
DELETE | 从服务器中删除命名资源 |
POST | 将客户端数据发送到一个服务器网关应用程序 |
HEAD | 仅发送命名资源响应中的 HTTP 首部 |
状态码
每条 HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码, 告知客户端请求是否成功,或者是否需要采取其他动作。表 1-3 显示了几种常见的 状态码。
HTTP转态码 | 描述 |
---|---|
200 | OK。文档正确返回 |
302 | Redirect(重定向)。到其他地方去获取资源 |
404 | 无法找到资源 |
500 | 服务器错误 |
报文
HTTP 报文是由一行一行的简单字符串组成的。HTTP 报文都是纯文本,不是二进 制代码,所以人们可以很方便地对其进行读写 1。图 1-7 显示了一个简单事务所使用 的 HTTP 报文
从 Web 客户端发往 Web 服务器的 HTTP 报文称为请求报文(request message)。从 服务器发往客户端的报文称为响应报文(response message),此外没有其他类型的 HTTP 报文。HTTP 请求和响应报文的格式很类似。
HTTP 报文包括以下三个部分
- 起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说 明出现了什么情况 - 首部字段
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为 了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首 部字段和添加新行一样简单 -
主体
空行之后就是可选的报文主体了,其中包含了所有类型的。请求主体中包括 了要发送给 Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起 始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意 的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含 文本
看个实例