HTTP消息解析

本文概述

  • 讯息类型
  • 邮件标题
  • 邮件正文
  • 讯息长度
  • 一般标题字段
HTTP消息用于显示客户端和服务器之间如何交换数据。它基于客户端-服务器体系结构。 HTTP客户端是一种与服务器建立连接以发送一个或多个HTTP请求消息的程序。 HTTP服务器是通过发送HTTP响应消息来接受连接以服务HTTP请求的程序。
HTTP消息可以分类如下:
讯息类型 HTTP消息由初始请求行和初始响应行组成。
格式:
HTTP-message = Request | Response ; HTTP/1.1 messages

1)初始请求线
对于请求和响应, 初始行是不同的。请求行由三部分组成:方法名称, 请求资源的本地路径以及所使用的HTTP版本。所有这些部分都由空格分隔。
句法:
GET /path/to/file/index.html HTTP/1.0

这里,
  • GET是最常见的HTTP方法。
  • 路径显示主机名后面的URL部分。也称为请求URI。
  • HTTP版本始终采用大写形式“ HTTP / x.x”。
HTTP消息解析

文章图片
2)初始响应热线
初始响应行也称为状态行。它还包括三个部分:HTTP版本, 给出请求结果的响应状态代码以及描述状态代码的英语原因短语。
例:
HTTP/1.0 200 OKorHTTP/1.0 404 Not Found

这里,
【HTTP消息解析】响应行和请求行的HTTP版本与“ HTTP / x.x”相同。
HTTP消息解析

文章图片
邮件标题 Message标头提供有关请求和响应的信息。它还提供有关在邮件正文中发送的对象的信息。邮件头有四种类型:
  1. General Header:它对于请求消息和响应消息都具有普遍适用性。
  2. 请求标头:它仅适用于请求消息。
  3. 响应头:它仅适用于响应消息。
  4. 实体标题:它定义有关实体主体以及请求所标识的资源的元信息。
以上所有标头均采用相同的通用格式。每个标头字段均包含一个名称, 后跟一个冒号和以下字段值:
message-header = field-name ":" [ field-value ]

邮件正文 HTTP消息的消息正文用于承载与请求和响应关联的整个正文。仅当应用了传输编码时, 消息主体才与整体有所不同, 如Transfer-Encoding头字段所示。
句法
message-body = entity-body| < entity-body encoded as per Transfer-Encoding>

传输编码务必用于指示应用程序所应用的任何传输编码, 以确保安全, 正确地传输消息。传输编码是邮件的属性。
讯息长度 消息的传输长度是消息正文的长度, 它出现在消息中。
在消息中, 当允许消息主体并给出Content-Length时, 其字段值务必与消息主体中的OCTET数量完全匹配。当接收到无效长度并检测到无效长度时, HTTP / 1.1用户代理务必通知用户。
一般标题字段 某些标头字段对请求和响应消息均适用。这些头字段仅在发送消息时适用。
句法
general-header = Cache-Control

    推荐阅读