![HTTP Tutorial](/http/images/http-mini-logo.jpg)
- HTTP 教程
- HTTP - 首页
- HTTP - 概述
- HTTP - 参数
- HTTP - 消息
- HTTP - 请求
- HTTP - 响应
- HTTP - 方法
- HTTP - 状态码
- HTTP - 报头字段
- HTTP - 缓存
- HTTP - URL 编码
- HTTP - 安全性
- HTTP - 消息示例
- HTTP 有用资源
- HTTP - 快速指南
- HTTP - 有用资源
HTTP - 消息
HTTP 基于客户端-服务器架构模型和无状态请求/响应协议,通过在可靠的 TCP/IP 连接上交换消息来运行。
HTTP“客户端”是一个程序(Web 浏览器或任何其他客户端),它建立与服务器的连接,以发送一个或多个 HTTP 请求消息。HTTP“服务器”是一个程序(通常是 Web 服务器,例如 Apache Web Server 或 Internet Information Services IIS 等),它接受连接以通过发送 HTTP 响应消息来服务 HTTP 请求。
HTTP 使用统一资源标识符 (URI) 来识别给定的资源并建立连接。连接建立后,**HTTP 消息**以类似于互联网邮件 [RFC5322] 和多用途互联网邮件扩展 (MIME) [RFC2045] 使用的格式传递。这些消息包括从客户端到服务器的**请求**和从服务器到客户端的**响应**,其格式如下:
HTTP-message = <Request> | <Response> ; HTTP/1.1 messages
HTTP 请求和 HTTP 响应使用 RFC 822 的通用消息格式来传输所需的数据。此通用消息格式包含以下四个项目。
- A Start-line
- Zero or more header fields followed by CRLF
- An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
- Optionally a message-body
在以下部分,我们将解释 HTTP 消息中使用的每个实体。
消息起始行
起始行将具有以下通用语法:
start-line = Request-Line | Status-Line
在分别讨论 HTTP 请求和 HTTP 响应消息时,我们将讨论请求行和状态行。现在,让我们看看请求和响应情况下起始行的示例。
GET /hello.htm HTTP/1.1 (This is Request-Line sent by the client) HTTP/1.1 200 OK (This is Status-Line sent by the server)
报头字段
HTTP 报头字段提供有关请求或响应,或有关在消息正文中发送的对象的必要信息。有四种类型的 HTTP 消息报头:
**通用报头:**这些报头字段对请求和响应消息都具有通用适用性。
**请求报头:**这些报头字段仅适用于请求消息。
**响应报头:**这些报头字段仅适用于响应消息。
**实体报头:**这些报头字段定义有关实体正文的元信息,或者如果没有正文,则定义有关请求标识的资源的元信息。
所有上述报头都遵循相同的通用格式,每个报头字段都包含一个名称,后跟一个冒号 (**:**),然后是字段值,如下所示:
message-header = field-name ":" [ field-value ]
以下是各种报头字段的示例:
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
消息正文
消息正文部分对于 HTTP 消息是可选的,但如果可用,则用于携带与请求或响应关联的实体正文。如果关联了实体正文,则通常**Content-Type** 和**Content-Length** 报头行指定关联正文的性质。
消息正文是承载实际 HTTP 请求数据(包括表单数据和上传等)和来自服务器的 HTTP 响应数据(包括文件、图像等)的部分。下面显示的是消息正文的简单内容:
<html> <body> <h1>Hello, World!</h1> </body> </html>
接下来的两章将利用上述概念来准备 HTTP 请求和 HTTP 响应。