Postman请求头中变量必须用{{variableName}}语法,仅Value支持,Key不支持;变量需正确定义且环境激活,动态变量如{{$timestamp}}可用但不支持表达式计算。

Postman 请求头里能直接用变量,但必须用 {{variableName}} 语法,不能写成 JavaScript 表达式或拼接字符串;否则请求头会原样发送,不会替换。
请求头中引用变量的正确写法
变量(环境变量、全局变量、集合变量)在 Headers 栏任意字段的 Value 位置,都支持 {{xxx}} 写法。Key 不支持变量,只能是固定字符串(比如 Authorization、Content-Type)。
常见错误现象:
- 写了
pm.environment.get("token")—— 这是脚本语法,在 Headers 里纯属无效文本 - 写了
{{token}}_v1—— Postman 不支持变量插值拼接,整个字符串会被当作文本发送 - 变量名拼错或大小写不一致(
{{Token}}≠{{token}}),控制台无报错,但值为空
实操建议:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 先确保变量已正确定义(在 Globals / Environment 面板里能看到 Current Value 有值)
- 在 Headers 的 Value 输入框里直接敲
{{,下拉列表会提示可用变量,选中即可,避免手误 - 如果变量值含空格或特殊字符(如 Bearer token),建议在变量值前后加引号(例如
"Bearer {{token}}"),但注意这属于值的一部分,由服务端解析
动态设置 Header 变量的两种常用场景
多数人卡在“怎么让 Header 自动更新”,核心是:变量值得变,而 Header 引用只是被动展示。
典型使用场景:
- 登录后把响应里的
access_token存为全局变量,后续所有请求的AuthorizationHeader 都用{{access_token}} - 不同环境用不同
API-VersionHeader,通过切换环境自动生效,无需改请求
实操建议:
- 在登录请求的
Tests脚本里用pm.globals.set("access_token", jsonData.access_token)动态赋值 - 不要在
Pre-request Script里重复 set 同一个变量,除非你明确需要覆盖(比如重试逻辑) - Header 中引用
{{access_token}}后,若发送失败且响应是 401,优先检查pm.globals.get("access_token")是否为空,而不是怀疑 Header 写法
Headers 变量失效的三个隐蔽原因
变量明明设置了,Header 却没生效,大概率不是语法问题,而是作用域或时机问题。
容易踩的坑:
- 用了环境变量
{{host}},但右上角环境选择器没选中对应环境(显示为 “No environment”) - 变量设在
Initial Value,但没填Current Value—— Postman 优先读 Current Value,为空时才 fallback 到 Initial Value - 在集合变量(Collection Variables)里定义了
auth_header,却在请求 Header 里写{{auth_header}},但该请求不属于这个集合(变量作用域不匹配)
验证方式:点击右上角眼睛图标 → 查看 Globals 和当前 Environment 的 Current Value 是否非空;再打开 Console 面板,手动执行 console.log(pm.globals.get("access_token")) 确认值存在。
能不能在 Header 里用动态变量(比如时间戳)?
可以,但必须用 {{$timestamp}} 这类内置动态变量,不能自己写 new Date().getTime()。
Postman 支持的动态变量有限,常见可用的有:
-
{{$timestamp}}:秒级时间戳 -
{{$randomInt}}:随机整数 -
{{$guid}}:生成 GUID -
{{$randomCountry}}:随机国家名(仅用于测试,非业务场景)
注意点:
- 动态变量每次请求都会刷新,适合防重放、埋点 ID 等场景
- 不支持自定义函数或表达式,比如
{{$timestamp + 3600}}会原样发送,不会计算 - 如果需要复杂逻辑(如 HMAC 签名),必须写在
Pre-request Script里,用pm.request.headers.add()手动添加 Header
真正难的不是怎么写,而是搞清变量在哪一级定义、有没有被覆盖、当前环境是否激活——这些细节比语法更容易导致 Header 失效。

















