当前位置: 首页 > 教程 > HTTP协议 >

HTTP-消息

精华
小牛编辑
189浏览
2023-03-14

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

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

HTTP使用统一资源标识符(URI)来标识给定资源并建立连接。建立连接后,将以与Internet邮件[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]相似的格式传递HTTP消息。这些消息包括客户端到服务器的请求以及服务器到客户端的响应,格式如下:

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

1 消息行

消息行具有以下通用语法:

start-line = Request-Line | Status-Line

让我们看一下在请求和响应的情况下消息行的示例:

GET /hello.htm HTTP/1.1     (请求时的消息行,也叫请求行)
HTTP/1.1 200 OK             (响应时的消息行,也叫响应行)

2 消息头

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

3 消息主体

消息主体部分,对于HTTP消息来说是可选的,但如果可用,则用于承载与请求或响应关联的实体主体。如果实体主体已关联,则通常Content-Type和Content-Length请求行指定关联主体的性质。

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

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