Post

HTTP协议--定义和基本格式

HTTP协议--定义和基本格式

HTTP协议的定义

超文本传输协议(HTTP)是用于传输超媒体文档(例如HTML)的应用程序层协议。它设计用于Web浏览器和Web服务器之间的通信,但也可以用于其他目的,例如机器对机器通信,对API的程序化访问等等。

超文本:指一种通过链接(超链接)实现非线性关联的文本,http最初是传输超文本而设计的协议,但后来演变为支持任意类型数据(如JSON,图片,视频)的通用传输协议

HTTP遵循经典的客户端服务器模型,客户端打开连接以提出请求,然后等到它从服务器收到响应。 HTTP是一种无状态协议,这意味着服务器在两个请求之间不保留任何会话数据,尽管后来的cookie添加为某些客户端服务器交互添加了状态。

HTTP报文的结构

HTTP报文分为请求报文(客户端发送)和响应报文**(服务器返回),均由以下三部分组成:

1. 起始行(Start Line)

请求报文起始行格式

定义请求类型,资源路径和协议版本,格式为

<方法><请求目标><协议版本>

GET /api/data HTTP/1.1

  • 方法:(Request Method):表示操作类型,如 GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。
  • 请求目标:通常是 URL 的路径部分(如 /index.html),或完整 URL(代理场景)。
  • 协议版本HTTP/1.1HTTP/2

响应报文起始行格式

定义协议版本、状态码和状态描述,格式为

<协议版本><状态码><状态描述>

HTTP/1.1 200 OK

  • 状态码(Status Code):3 位数字,表示请求结果
  • 状态描述(Reason Phrase):人类可读的状态解释(如 OK)

2. 头部字段(Headers)

键值对形式,描述请求的元信息,每行一个字段,格式为 字段名: 值。 常见头部字段:

  • Host: 目标服务器域名(必填,HTTP/1.1 要求)。
  • User-Agent: 客户端标识(如浏览器类型)。
  • Accept: 客户端可接受的内容类型(如 application/json)。
  • Content-Type: 请求主体的数据类型(如 application/json)。
  • Content-Length:报文主体(Body)的长度(字节数)

3. 报文主体(Body,可选)

可选部分,用于携带数据(如 POST 请求的表单或 JSON 数据)。

示例

1
2
3
4
5
6
7
8
9
POST /post HTTP/1.1
Host: httpbin.org
Accept: application/json
Content-Type: application/json

{
    "name":"nomad",
    "data":"test"
}
This post is licensed under CC BY 4.0 by the author.