【问题标题】:Postman is not adding headers programmatically邮递员没有以编程方式添加标题
【发布时间】:2025-12-23 09:05:17
【问题描述】:

在 Ubuntu 16.04 上使用 Postman 5.5.0。我为我的整个收藏定义了以下预请求脚本。我的目标是在集合级别为每个请求设置一个标头,而无需手动添加。

console.log('adding "Authorization: Token {{apiToken}}" header to current request');

pm.request.headers.add({
    key: 'Authorization',
    value: 'Token {{apiToken}}'
});
console.log(pm.request.headers);

我也试过直接用value: 'Token '+pm.environment.get('apiToken')设置标题值。

这两种方法实际上都没有将它添加到请求中。 pm.request.headers 报告说它在那里,但到了表演时间,它肯定不是。这是控制台输出:

我还尝试将disabled: false 添加到传递给add 的对象中,如果我手动将标头添加到单个请求中会出现什么情况。

发生了什么事?

【问题讨论】:

  • 我不认为这是有效的方式,是吗?您是否阅读过 Postman 网站上的一些文档,这些文档告诉您这是添加它们的有效方法?您不能直接将其添加到标题部分吗?该变量将做同样的事情并为请求设置。添加 Token {{apiToken}} 作为 Auth 标头的值。
  • 我应该提到我首先尝试使用来自pm.environment 的值直接设置它。这是一个很长的镜头。现在不重要了;)
  • 您如何在集合级别捕获和存储apiToken,以便在标题中引用它?
  • 可能与here重复

标签: postman


【解决方案1】:

如果您尝试在Pre-request ScriptTests 选项卡中使用{{...}} 语法,它不会为您设置环境变量值,因为它只能用于 URL、标题和请求正文。

您在代码中使用它的方式总是将Authorization 键设置为字符串 - 'Token {{apiToken}}'。

获取价值的一种完全可怕的方式是:

pm.request.headers.add({
    key: 'Authorization',
    value: `Token ${pm.environment.get('apiToken')}`
});

但同样,这不会在集合级别设置标题。

您可以将其作为集合级别的全局变量添加到 pre-request script - 然后可以将其添加到每个请求中。

【讨论】:

  • 我没有看到集合级标题选项卡,这就是问题所在。不过,有一个集合的授权选项卡最终对我有用。
  • 如果您在问题中提到您在集合级别需要它 - 我会说还没有选项卡,尽管它是一个已被多次要求的功能请求场合。
  • 哇,你说得对。当我写下这个问题时,我一定比我想象的还要累。 D:很抱歉造成混乱!
  • 公平地说,我在原始问题中确实说过“我为我的整个收藏定义了以下预请求脚本”。但我想我的目标不是必须手动编辑每个请求还不是很清楚。 :P
  • :) 是的,实际上我不得不再次重读一遍才能看到句末的“收藏”参考。所以我建议的方法可以正常工作并正确设置标头值,但是因为您不想手动编辑每个请求,所以它对您不起作用。您可以导出集合并执行find/replace 并重新导入(虽然不是一个好的解决方法)