共计 1508 个字符,预计需要花费 4 分钟才能阅读完成。
技术背景
在接口开发和调试过程中,经常需要修改 HTTP 请求的 Header 参数。常见场景包括:

- 测试不同鉴权 Token 的有效性
- 模拟多环境切换(如切换测试 / 生产环境标识)
- 调试特定客户端版本的兼容性
- 验证服务端对非常规 Header 的处理逻辑
工具对比
以下是主流调试工具在 Header 修改方面的对比:
- Charles:
- 优势:支持断点实时修改、Map Local 批量替换、脚本自动化
-
劣势:商业软件(免费版有功能限制)
-
Postman:
- 优势:可视化界面友好,适合手工测试
-
劣势:无法拦截和修改已有应用的请求
-
Fiddler:
- 优势:免费开源,插件生态丰富
- 劣势:Windows 平台独占,脚本学习成本高
核心操作
SSL 证书配置
- 安装 Charles 根证书:
-
菜单选择 Help > SSL Proxying > Install Charles Root Certificate
-
信任证书(以 macOS 为例):
- 钥匙串访问中找到 ”Charles Proxy” 证书
-
右键选择 ” 显示简介 ” > 信任 > 始终信任
-
启用 SSL 代理:
- 菜单选择 Proxy > SSL Proxying Settings
- 勾选 ”Enable SSL Proxying”
- 添加需要抓包的域名(或使用 * 匹配所有)
使用 Breakpoints 修改 Header
- 开启断点功能:
- 菜单选择 Proxy > Breakpoint Settings
-
添加需要拦截的请求 URL(支持通配符)
-
触发请求后进入编辑界面:
- 在 Request 选项卡中找到 Headers 部分
- 修改或添加需要的 Header 键值对
- 点击 ”Execute” 继续请求
Map Local 批量替换
创建 headers-config.json 配置文件:
{
"rules": [
{
"match": "^https://api.example.com",
"headers": {
"X-Env": "test",
"Authorization": "Bearer test_token"
}
}
]
}
配置步骤:
1. 菜单选择 Tools > Map Local
2. 点击 ”Add” 添加新规则
3. 选择配置文件并设置匹配条件
避坑指南
- HTTPS 抓包空白问题
- 检查设备是否安装了 Charles 根证书
-
确认 SSL Proxying 中包含了目标域名
-
修改后 Header 未生效
- 确保没有其他规则覆盖当前修改
-
检查 Breakpoints 是否被意外禁用
-
Map Local 文件加载失败
- 验证 JSON 格式是否正确
- 检查文件路径是否包含中文或特殊字符
高级技巧:动态 Header 注入
使用 Charles Script 实现根据响应内容修改后续请求 Header:
function beforeRequest(request) {if (request.url.indexOf("/login") > -1) {request.headers.add("X-Debug-Mode", "true");
}
}
function beforeResponse(response) {if (response.url.indexOf("/auth") > -1) {var token = JSON.parse(response.body).token;
session.setVariable("auth_token", token);
}
}
配置方法:
1. 菜单选择 Tools > Scripting
2. 粘贴上述脚本并保存
3. 在需要 Token 的请求 Header 中添加:
{{auth_token}}
思考题
当需要修改的 Header 参数依赖前序请求响应时,应该如何设计调试流程?
实际开发中,我通常采用组合方案:先用 Breakpoints 手动获取初始 Token,再通过 Scripting 实现自动化传递。对于复杂场景,可以配合 Map Local 和环境变量实现多步骤的 Header 管理。
