Postman添加自定义请求头需严格遵循HTTP协议规范:Key须合法,Value含中文或特殊字符会报错;multipart/form-data中不可手动修改Content-Type;推荐用Authorization标签页或Pre-request Script动态处理,结合环境变量与Preset提升复用性与安全性。

Postman 添加自定义请求头本身很简单,但**直接填中文、特殊字符、或在 multipart/form-data 请求里手动改 Content-Type,几乎一定会出错**。关键不是“能不能加”,而是“什么时候该加、怎么加才不破坏协议”。
Headers 标签页添加是最常用方式,但有硬性限制
在请求编辑区点击 Headers 标签,输入 Key 和 Value 即可。但注意:
-
Key必须是合法 HTTP 头名(如Authorization、X-Request-ID),不能含空格或控制字符 -
Value若含中文、emoji、斜杠、等号等,Postman 会标红叹号 ❗️并拒绝发送 —— 这不是 bug,是 HTTP 协议要求值必须可安全传输 - 对
GET或JSON POST类请求,这种方式足够;但对文件上传等场景,它只是“补充”,不能动自动头
文件上传时加 Header 容易踩的坑:别碰自动 Content-Type
选 Body → form-data 后,Postman 会自动生成类似 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxxx 的头。此时:
- 你手动添加的
Authorization、X-API-Key等可以正常生效 - 如果你删掉它、或手输一个不带
boundary的Content-Type: multipart/form-data,服务器收不到文件,大概率返回400 Bad Request - 更稳妥的做法:在
Authorization标签页选Bearer Token,Postman 会自动同步到Headers,且不干扰multipart自动头
需要动态生成或编码 Header?用 Pre-request Script
比如要对中文值做 encodeURIComponent,或拼接时间戳、签名,就得靠脚本。示例:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
pm.request.forEachHeader(function(header) {
if (header.key === 'X-Custom-Name') {
header.value = encodeURIComponent(header.value);
pm.request.upsertHeader(header);
}
});
注意点:
- 脚本只在发送前运行,不会影响已保存的原始值
- 不要在脚本里调用
pm.request.headers.clear(),否则会清掉Content-Type等关键自动头 - 调试用
console.log(),输出看 Postman 底部的Console面板(需开启)
环境变量 + Preset 让 Header 复用更安全
硬编码 token 或 URL 在 Header 里,换环境就得全改。推荐:
- 把 token 存进环境变量,比如
auth_token - 在
Headers里写Authorization: Bearer {{auth_token}},Postman 会自动替换 - 常用组合(如
Content-Type+Accept+Authorization)存为Preset,下次新建请求一点就加载
真正容易被忽略的是:Header 的生效顺序和协议合规性 —— 它不只决定“服务器认不认识你”,更决定“服务器能不能正确解析你的 body”。尤其当接口文档没写清楚时,多看一眼响应里的 400 或 415 Unsupported Media Type 错误,往往就是 Header 冲突或缺失导致的。










