当前位置: 首页 > 文档资料 > HTTP 入门教程 >

Messages

优质
小牛编辑
122浏览
2023-12-01

HTTP基于客户端 - 服务器体系结构模型和无状态请求/响应协议,该协议通过可靠的TCP/IP连接交换消息来运行。

HTTP“客户端”是为了发送一个或多个HTTP请求消息而与服务器建立连接的程序(Web浏览器或任何其他客户端)。 HTTP“服务器”是一个程序(通常是Web服务器,如Apache Web服务器或Internet信息服务IIS等),它接受连接以通过发送HTTP响应消息来提供HTTP请求。

HTTP利用统一资源标识符(URI)来标识给定资源并建立连接。 建立连接后, HTTP messages的传递格式类似于Internet邮件[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]所使用的格式。 这些消息包括从客户端到服务器的requests以及从服务器到客户端的responses ,其具有以下格式:

 HTTP-message   = <Request> | <Response> ; HTTP/1.1 messages

HTTP请求和HTTP响应使用RFC 822的通用消息格式来传输所需的数据。 此通用消息格式包含以下四个项目。

None
  • A Start-line
  • 零个或多个标题字段后跟CRLF
  • 空行(即CRLF前面没有任何内容的行),表示标题字段的结尾
  • 可选的消息体

在以下部分中,我们将解释HTTP消息中使用的每个实体。

Message Start-Line

起始行将具有以下通用语法:

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消息头:

  • General-header:这些头字段对请求和响应消息都具有普遍适用性。

  • Request-header:这些标头字段仅适用于请求消息。

  • Response-header:这些标头字段仅适用于响应消息。

  • Entity-header:这些标头字段定义关于实体主体的元信息,或者,如果不存在主体,则定义关于请求标识的资源的元信息。

所有上述标题都遵循相同的通用格式,每个标题字段由一个名称后跟冒号(:)和字段值组成,如下所示:

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-TypeContent-Length标题行指定相关主体的性质。

消息体是承载来自服务器的实际HTTP请求数据(包括表单数据和上载等)和HTTP响应数据(包括文件,图像等)的消息体。 下面显示的是消息正文的简单内容:

<html>
   <body>
      <h1>Hello, World!</h1>
   </body>
</html>

接下来的两章将利用上面解释的概念来准备HTTP请求和HTTP响应。