一、HTTP请求结构详解
HTTP请求由三部分组成:请求行、请求头、请求体,是客户端向服务器发起资源操作的标准化格式。
-
请求行(Request Line)
- 构成:
方法 URI 协议版本
- 方法:定义操作类型(8种核心方法):
- GET:获取资源(幂等)
- POST:提交数据(非幂等)
- PUT:更新资源(幂等)
- DELETE:删除资源(幂等)
- HEAD:获取响应头
- OPTIONS:查询服务器支持的方法
- PATCH:局部更新资源
- TRACE:追踪请求路径
- URI:资源标识符(如
/api/user
或完整URL) - 协议版本:
HTTP/1.1
(主流)或HTTP/2
(支持多路复用)
- 方法:定义操作类型(8种核心方法):
- 构成:
-
请求头(Request Headers)
- 功能:传递客户端环境、数据格式、缓存策略等元信息
- 核心字段:
字段名 作用示例 Host
目标主机域名(HTTP/1.1强制要求) 5
User-Agent
客户端类型(如浏览器/爬虫标识) 6
Content-Type
请求体数据类型(如 application/json
)Authorization
身份认证令牌(如 Bearer token
)9
Cache-Control
缓存策略(如 max-age=3600
)7
Accept-Encoding
支持压缩算法(如 gzip
)5
-
请求体(Request Body)
- 适用场景:POST/PUT等非幂等方法的数据提交
- 数据格式:
- 表单数据:
application/x-www-form-urlencoded
- 文件上传:
multipart/form-data
- 结构化数据:
application/json
(现代API主流)
- 表单数据:
- 长度控制:通过
Content-Length
或分块传输编码
二、HTTP响应结构详解
HTTP响应包含状态行、响应头、响应体,用于传递服务器处理结果。
-
状态行(Status Line)
- 构成:
协议版本 状态码 状态描述
- 状态码分类:
类别 含义 常见状态码 1xx 信息响应(已接收) 100 Continue(继续发送请求体) 1
2xx 成功处理 200 OK(默认成功) 4
201 Created(资源创建成功) 3xx 重定向 301 Moved Permanently(永久重定向) 304 Not Modified(缓存未更新) 7
4xx 客户端错误 400 Bad Request(语法错误) 403 Forbidden(权限不足) 10
5xx 服务器错误 500 Internal Server Error(通用错误) 503 Service Unavailable(服务不可用)
- 构成:
-
响应头(Response Headers)
- 核心字段:
字段名 作用示例 Content-Type
响应体类型(如 text/html; charset=UTF-8
)5
Content-Length
数据长度(字节) Cache-Control
客户端缓存策略(如 no-store
禁用缓存)Set-Cookie
会话标识设置(如 sessionid=abc123
)7
Location
重定向目标地址(配合3xx状态码) 4
- 核心字段:
-
响应体(Response Body)
- 数据形式:
- 结构化数据:JSON/XML(API接口)
- 非结构化数据:HTML/CSS/JS(网页渲染)
- 二进制数据:图片/视频/文件下载
- 压缩传输:通过
Content-Encoding: gzip
减少带宽
- 数据形式:
Content-Disposition: attchement;filename=...
**
- 作用:强制浏览器下载文件而非渲染,指定文件名
- 在后端手动设置的