文章目录
在 HTTP 协议的通信架构中,请求头(Header)和请求体(Body)如同两条并行的数据流,承载着不同性质的信息。理解它们的本质区别,不仅能优化 API 设计,还能避免因数据存储位置不当引发的性能问题和安全漏洞。本文将从技术原理、应用场景和最佳实践三个维度展开分析。
一、数据承载的本质差异
1.1、请求头:元数据的 “集装箱”
核心功能:传递与请求行为相关的控制信息,如
User-Agent
(客户端标识)、Authorization
(身份凭证)、Content-Type
(数据格式声明)。典型用例:
GET /api/data HTTP/1.1
Host: example.com
Authorization: Bearer 123456
Cache-Control: no-cacheGET /api/data HTTP/1.1
技术特性:
键值对结构:严格遵循
Key: Value
格式,换行符分隔。长度限制:受服务器配置约束(如 Nginx 默认限制 4KB),敏感信息泄露风险高(日志记录)。
全局影响:一个请求头可能影响整个请求生命周期(如
Cache-Control
控制缓存策略)。
1.2、请求体:业务数据的 “运输舱”
核心功能:存储实际业务数据,如 JSON 格式的用户注册信息、表单提交的文件内容。
典型用例:
POST /user HTTP/1.1
Content-Type: application/json
{
"username": "test",
"email": "test@example.com"
}
技术特性:
格式灵活:支持
application/x-www-form-urlencoded
、multipart/form-data
、application/json
等多种编码。大小限制:服务器可配置(如 Nginx 默认限制 1MB),适合传输大文件。
语义关联:与请求方法强相关(POST/PUT/PATCH 常用,GET/HEAD 禁止)。