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.1或HTTP/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.