HTTP 请求行判读
HTTP 请求行由三部分组成:方法、请求目标与协议版本,例如「GET /api/v1/orders HTTP/1.1」。用 http.request 可以把全部请求过滤出来,再按方法、请求目标、版本三个字段分列核对,方法或路径出现异常时一眼能看出来。字段解析需要完整的请求行,报文分片不全时会退化成原始数据。
基本信息
| 适用平台 | Wireshark 3.x/4.x,解析 HTTP/1.x 报文 |
|---|---|
| 相关字段 | http.request.method、http.request.uri、http.request.version |
| 协议依据 | RFC 9112(HTTP/1.1 报文语法) |
| 解析前提 | 请求行完整捕获且该端口已被识别为 HTTP |
典型使用场景
- 核对方法分布:统计各方法占比是否与业务预期一致
- 定位异常路径:按路径片段筛出报错或调试接口
- 检查协议版本:确认客户端是否仍在使用 HTTP/1.0
- 判断代理转发:请求目标出现完整地址说明经过代理
- 与响应串联:把请求与对应响应码连起来形成完整证据
常用过滤
常用过滤
http.request # 全部请求
http.request.method == "POST" # 只看提交类请求
http.request.uri contains "/api/v1" # 按路径筛选
http.request.version == "HTTP/1.1" # 核对协议版本请求行组成
| 组成 | 示例 | 判读要点 |
|---|---|---|
| 方法 | GET、POST、PUT | 区分大小写,异常代理可能原样转发错误写法 |
| 请求目标 | /api/v1/orders?page=2 | 出现绝对地址说明经过代理 |
| 协议版本 | HTTP/1.1 | 出现 1.0 说明客户端实现较旧 |
| 行结尾 | 回车换行 | 缺失会直接导致解析失败 |
方法名区分大小写,规范实现只接受大写形式。抓包里看到小写方法名,通常说明中间代理原样转发了异常请求,需要回到代理层核查。
请求目标里出现完整的绝对地址,说明这条请求是发给代理的;直连服务器的请求一般只写路径。两种形态混用时,可以判断流量走了不同的转发路径。
端口不在 Wireshark 默认的 HTTP 端口列表里时,需要先在协议首选项里把它加进去,否则报文只会显示成 TCP 数据,看不到任何 http 字段。