HTTP 核心知识结合 (JMeter/Fiddler 实战场景)
一、HTTP 核心工作流程
建立连接:客户端(浏览器 / APP/JMeter)与服务器通过 TCP 三次握手建立连接。
发送请求:客户端向服务器发送 HTTP 请求报文(包含请求行、请求头、请求体)。
处理请求:服务器解析请求,处理业务逻辑,生成响应报文。
返回响应:服务器向客户端返回 HTTP 响应报文(包含状态行、响应头、响应体)。
关闭连接:HTTP/1.0 默认为短连接,请求完成后关闭 TCP;HTTP/1.1 支持长连接(Connection: keep-alive),可复用连接处理多个请求。
二、HTTP 请求报文结构(Fiddler 可直接查看)
请求报文分为 3 部分,Fiddler 中选中会话后,在 Inspectors → Request → Raw 可查看原始报文:
http
1. 请求行:方法 + URL + 协议版本
POST /api/login HTTP/1.1
2. 请求头:键值对,传递元信息(如Cookie、Content-Type)
Host: www.test.com
Content-Type: application/json
Cookie: sessionId=123456
3. 请求体:可选,传递请求参数(如POST的JSON/表单数据)
{"username":"test","password":"123456"}
- 核心请求方法
方法 作用 幂等性 常用场景
GET 从服务器获取资源 是 查询数据(如获取用户信息)
POST 向服务器提交资源 否 提交数据(如登录、创建订单)
PUT 全量更新服务器资源 是 更新用户信息(全字段)
DELETE 删除服务器资源 是 删除订单 - 关键请求头
Host:目标服务器域名 / IP(必选,用于虚拟主机区分)。
Content-Type:请求体数据格式,接口测试高频使用:
application/x-www-form-urlencoded:表单提交(默认)。
application/json:JSON 格式(RESTful 接口首选)。
multipart/form-data:文件上传。
Cookie:携带会话信息,维持用户登录状态。
User-Agent:客户端标识(如浏览器、JMeter、APP)。
三、HTTP 响应报文结构(Fiddler 查看响应,JMeter 断言验证)
响应报文同样分为 3 部分,Fiddler 中 Inspectors → Response → Raw 可查看:
http
1. 状态行:协议版本 + 状态码 + 状态描述
HTTP/1.1 200 OK
2. 响应头:键值对,传递响应元信息(如响应格式、服务器信息)
Content-Type: application/json
Server: nginx
Set-Cookie: sessionId=789012; Path=/
3. 响应体:服务器返回的实际数据(如JSON、HTML)
{"code":200,"msg":"success","data":{"token":"abcdefg"}}
- 核心状态码(JMeter 响应断言常用)
状态码分为 5 类,接口测试重点关注 2xx(成功)、4xx(客户端错误)、5xx(服务器错误):
类别 状态码 含义 排查方向
成功 200 OK 请求成功 正常响应
重定向 302 Found 临时重定向 检查 Location 响应头
客户端错误 400 Bad Request 请求参数错误 核对请求参数格式
客户端错误 401 Unauthorized 未授权 检查 Token/Cookie 是否有效
客户端错误 403 Forbidden 禁止访问 检查权限配置
客户端错误 404 Not Found 资源不存在 核对 URL 路径
服务器错误 500 Internal Server Error 服务器内部错误 查看服务器日志
服务器错误 503 Service Unavailable 服务不可用 检查服务器是否过载 - 关键响应头
Content-Type:响应体数据格式(如 application/json)。
Set-Cookie:服务器向客户端设置 Cookie,维持会话。
Cache-Control:缓存控制策略(如 no-cache 表示不缓存)。
四、HTTP 无状态与会话维持
HTTP 本身是无状态协议,服务器无法识别连续请求是否来自同一客户端,需通过以下方式维持会话:
Cookie:客户端存储的小型文本文件,服务器通过 Set-Cookie 响应头设置,客户端后续请求自动携带。
Fiddler 可在 Inspectors → Request → Cookies 查看携带的 Cookie。
JMeter 需添加 HTTP Cookie 管理器 自动管理 Cookie。
Token:接口认证主流方式(如 JWT),客户端登录后获取 Token,后续请求在 请求头 中携带(如 Authorization: Bearer)。
Fiddler 可抓包查看 Token 是否正确携带。
JMeter 需用 JSON 提取器 从登录响应中提取 Token,后续请求引用变量(如 ${token})。
五、HTTP 与 HTTPS 的区别(抓包与测试必知)
维度 HTTP HTTPS
安全性 明文传输,易被窃听、篡改 加密传输(TLS/SSL 层),安全可靠
端口 80 443
抓包配置 Fiddler/JMeter 无需额外配置 Fiddler 需安装信任根证书,JMeter 需配置 SSL 管理器
性能 无加密开销,速度快 有握手和加密开销,速度稍慢
浙公网安备 33010602011771号