Postman请求头中变量引用写法为{{variable_name}},仅Value栏支持,需确保变量已定义且环境已正确选中;常见失效原因包括拼写错误、未保存、环境未选中或作用域冲突。

Postman 请求头里怎么写变量引用
直接用 {{variable_name}},和 URL、Body 里写法完全一样。只要变量已定义(全局、环境、集合任一作用域),在 Headers 面板的 Value 栏里就能用。
常见错误现象:输入 {{token}} 后请求发出去,服务端报 401 Unauthorized,但控制台没报错——大概率是变量名拼错、没保存、或当前没选中含该变量的环境。
- 变量名区分大小写,
{{Token}}和{{token}}是两个变量 - 如果用了环境变量,右上角必须手动点选对应环境(图标旁有 ✔️),否则
{{xxx}}不会解析 - Headers 的
Key栏不支持变量(比如不能写{{auth_header}}: Bearer xxx),只有Value支持
Header 变量值从哪来:全局 vs 环境 vs Tests 动态赋值
变量来源决定它是否能跨请求复用、是否随环境切换而变。
如果你的 Authorization 头要填登录后返回的 token,就不能手动设进全局变量初始值——因为每次登录都不同。得靠 Tests 脚本提取并写入:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
pm.environment.set("auth_token", pm.response.json().token);
后续请求 Header 就可以写:Authorization: Bearer {{auth_token}}
- 全局变量适合固定值,如
api_key、base_url - 环境变量适合分环境变化的值,如
base_url在 dev 环境是https://dev-api.example.com,prod 是https://api.example.com - Tests 中设置的变量默认写入当前环境(
pm.environment.set),不是全局;想写全局就用pm.globals.set
Presets 里能不能用变量
可以,但只限于你手动添加 Preset 时,在 Value 输入框里写 {{xxx}}。保存后,每次应用这个 Preset,值都会实时解析。
注意:Presets 本身不存储变量逻辑,只是把带 {{}} 的字符串存下来。所以如果变量未定义,应用 Preset 后 Header 值会显示为空或字面量 {{xxx}}(取决于 Postman 版本)。
- Presets 里的变量引用,作用域仍遵循全局 > 环境 > 集合顺序
- 不要在 Preset Key 里写变量,比如
{{content_type}}: application/json —— 这会直接报错或被忽略 - Presets 适合封装常用组合,比如
Content-Type:application/json+Authorization:Bearer {{auth_token}}
为什么 Header 变量有时不生效,但 URL 里却正常
最常被忽略的是变量作用域冲突和解析时机。URL 在请求发起前就完成变量替换;而 Header 若依赖 Tests 设置的变量,但那个变量是在上一个请求的 Tests 里才写的,当前请求根本“看不到”。
- 确保设置变量的请求(如登录)已成功运行过,且 Tests 脚本无语法错误(看 Console 输出)
- 检查变量名是否在多个作用域重复定义,比如环境里有
auth_token,全局也有同名变量——Postman 会优先取环境值,但如果你没选环境,就 fallback 到全局,而全局可能还是旧值 - Pre-request Script 中无法读取 Tests 设置的变量(因为 Tests 在响应后执行),所以别指望在 Pre-request 里用
pm.environment.get("auth_token")来做判断再改 Header

















