请求方法过滤在做什么
http.request.method 匹配请求行里的方法名,如 GET、POST、PUT、DELETE;只用 http.request 则匹配所有请求报文而不区分方法。它的实用价值在于按语义快速筛选:排查数据上报问题看 POST,排查资源删除问题看 DELETE,排查跨域预检看 OPTIONS。要注意这些字段只在明文 HTTP/1.x 流量里存在,加密通道与 HTTP/2 需要先解密,否则永远查不到。
基本信息
| 精确匹配 | http.request.method == "POST" |
|---|---|
| 全部请求 | http.request(不区分方法) |
| 配套字段 | http.request.uri、http.host、http.response.code |
| 大小写 | 方法名通常大写,写小写会匹配不到 |
| 前提 | 仅对可解析的明文 HTTP/1.x 生效 |
典型使用场景
- 定位数据上报问题:只看提交类请求,减少无关读取请求的干扰
- 核对接口调用方式:确认某接口是否被错误地用成了读取请求
- 排查跨域问题:筛预检请求,看是否频繁产生额外交互
- 按接口统计调用量:方法与路径组合,得到具体接口的调用次数
- 排查删除类操作:追踪删除请求与响应,审计关键操作
常用示例
常用示例
http.request.method == "POST" # 提交类请求
http.request.method == "DELETE" && http.host contains "api" # 某域名下的删除请求
http.request.method == "OPTIONS" # 跨域预检
http.request && !http.response # 有请求无响应的会话
http.request.method == "POST" && http.response.code >= 500 # 提交后服务端报错
http.request.method != "GET" # 排除读取请求方法与排查方向
| 方法 | 语义 | 常见问题 |
|---|---|---|
| GET | 读取资源 | 请求量最大,排查时通常作为背景过滤掉 |
| POST | 提交或创建 | 数据上报失败、重复提交、返回 4xx |
| PUT | 替换资源 | 幂等性问题、覆盖范围超出预期 |
| DELETE | 删除资源 | 误删、鉴权不足、返回 403 |
| OPTIONS | 询问支持的方法 | 跨域场景频繁出现,说明预检未缓存 |
| HEAD | 只取响应头 | 健康检查与探测常见 |
方法名区分大小写,用小写写条件会匹配不到。同时留意部分客户端或代理会使用扩展方法,遇到不常见的名称时先确认它是否来自非标准实现。
HTTP/2 与加密流量里没有这些字段。查不到请求不一定是没有请求,先确认该会话是否已被解析为明文 HTTP,必要时先用密钥日志解密。
组合排查
组合排查
http.request.method == "POST" && http.request.uri contains "/order" # 某接口的提交
http.request.method == "POST" && tcp.stream == 9 # 单条会话内查看
tcp.stream == 9 && http.time > 2 # 该会话响应是否偏慢判读要点
- 请求数量远大于响应数量时,先看是否存在被重置或超时的会话
- 同一接口的请求方法突然变化,多半是客户端版本或配置发生了改动
- 预检请求频繁出现说明跨域缓存未生效,属于可优化的性能问题
- 只看方法不看返回码,定位不到具体失败原因,两者应一起使用