📌 HTTP 请求的完整结构
HTTP 请求由三部分组成:
- 请求行(Request Line):包含 请求方法、URL 和 HTTP 版本
- 请求头(Request Headers):包含 客户端提供的附加信息
- 请求体(Request Body):包含 客户端发送的数据(仅适用于
POST
、PUT
等请求)
✅ 1. 请求行(Request Line)
格式:
<请求方法> <请求路径> <HTTP版本>
示例:
GET /index.html HTTP/1.1
📌 常见 HTTP 请求方法
方法 | 作用 |
---|---|
GET | 请求数据,不会修改服务器资源 |
POST | 发送数据(如表单、JSON)到服务器 |
PUT | 更新/创建资源 |
DELETE | 删除服务器上的资源 |
PATCH | 对资源进行部分更新 |
HEAD | 只请求响应头,不返回具体内容 |
OPTIONS | 查询服务器支持的 HTTP 方法 |
CONNECT | 建立到目标服务器的隧道(如 HTTPS) |
✅ 2. 请求头(Request Headers)
请求头 提供额外信息,分为以下几类:
- 通用头:适用于所有请求
- 请求相关头:客户端特有
- 实体头:描述请求体内容
- 身份认证头:身份认证信息(如
Authorization
)
📌 重要的 HTTP 请求头
请求头字段 | 作用 | 示例值 |
---|---|---|
Host | 服务器域名 | Host: www.example.com |
User-Agent | 客户端信息(浏览器、操作系统等) | User-Agent: Mozilla/5.0 |
Accept | 客户端希望的响应格式 | Accept: application/json |
Accept-Encoding | 支持的压缩格式 | Accept-Encoding: gzip, deflate |
Referer | 请求来源 | Referer: https://google.com |
Origin | 请求的源地址(跨域请求时) | Origin: https://example.com |
Authorization | 身份认证 | Authorization: Bearer <token> |
Cookie | 客户端存储的会话信息 | Cookie: sessionId=abc123 |
Connection | 连接管理(是否保持长连接) | Connection: keep-alive |
✅ 3. 请求体(Request Body)
请求体 仅适用于 POST
、PUT
、PATCH
等方法,包含客户端发送的数据。
📌 常见请求体格式
格式 | Content-Type | 示例 |
---|---|---|
JSON | application/json | {"username": "Alice", "password": "1234"} |
表单数据(普通表单) | application/x-www-form-urlencoded | username=Alice&password=1234 |
表单数据(文件上传) | multipart/form-data | Content-Disposition: form-data; name="file"; filename="a.jpg" |
XML | application/xml | <user><name>Alice</name></user> |
文本数据 | text/plain | Hello World |
✅ HTTP 请求示例
📌 GET 请求(无请求体)
GET /api/user HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: application/json
📌 POST 请求(JSON 数据)
POST /api/login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 35
{"username": "Alice", "password": "1234"}
📌 PUT 请求(更新资源)
PUT /api/user/1 HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 45
{"id": 1, "username": "Alice", "email": "new@email.com"}
📌 总结
- HTTP 请求 = 请求行 + 请求头 + 请求体
- 请求行:包含 方法、URL、HTTP 版本
- 请求头:提供 请求的附加信息(如
User-Agent
、Authorization
) - 请求体(仅部分请求有):用于传输数据,常见格式有 JSON、表单、XML
GET
请求 没有请求体,而POST
、PUT
、PATCH
等请求 包含请求体
这些内容在 Web 开发、API 调试 和 网络安全中都非常重要!