postman如何设置鉴权authorization header(怎么只设置一次,统一管理,不要每个request重复设置)

一、背景

我们在postman里头建请求(request)之前一般会建集合(collection),用collection来组织多个request。一个postman里头可以建多个collection。

我希望,在collection下面的所有request都能共享 "鉴权" 配置,我不希望每个request里头都单独配置,这样重复的工作很多。

二、实现

其实,每次新建的request,其Authorization都默认继承parent,即 "Inherit auth from parent",那么这个 "parent" 指的是什么?指的就是collection的配置,collection配置了鉴权,下面的所有request都能自动继承配置,即无需在每个request里重复配置。下图是某个request的Authorization默认继承parent

怎么在collection中定义鉴权呢?

如下图步骤,按照自己的实际情况选择鉴权的类型,比如Bearer这种就非常常见,在Token里头填入token的值

  • token要填什么值?从哪里获取?

    • 比如在浏览器登录你的网站后,去找请求后端接口的请求,找Authorization请求头的值,比如值如果是 Bearer xxxx,就去掉 Bearer 前缀,只把 xxxx 填入到下图的Token输入框中
    • 如果有获取token的接口,直接在postman中建一个这样的request,发起请求后将得到的token值,手工复制到下图的Token输入框中(当然,你可以设置token值为环境变量或全局变量,然后下图中填入{{your_access_token_name}}进行引用)
  • postman中的 Authorization的原理,会自动帮你添加 Authorization 请求头,所以你无需再在你的request中的Headers的tab中重复添加。如果重复添加,一般会被collection中设置的值覆盖,这种情况很难察觉,从而很难排查 "为什么填入了正确的token但是不work"

    你可以发起request,从postman的console里头查看请求头,检查传的authorization的值是否是预期的

三、其他补充

3.1 其他补充1

获取token的request,postman的 Tests 这个tab 里头,可以写获取到返回值后的处理逻辑,如图是把返回值(request body)转为json后取里头名为 access_token 的字段的值,并写入到 "环境" 或者 "全局" 中,变量名为 access_token,使用的地方使用 {{access_token}} 即可引用

  • pm.environment... 这是写入到某个环境里头,见下图,由于右上角是 "No Environment", 所以这个写法无法绑定到任何一个环境,会导致使用 {{access_token}} 取值为空
  • pm.globals... 这种是设置到全局scope的,很方便你不想建Environment的时候这么做简单粗暴

如何查看当前环境变量的值?

点击右上角的 "眼睛" 图标

3.2 其他补充2

众所周知,请求头(无论请求头还是响应头)是不区分大小写的,你看本文时有可能会混着说,比如说header是authorization或者Authorization

事实上,chrome的dev tools,给你显示的是大写,但是拷贝出来是小写,不信你去试下

下面的header拷贝出来分别是 :authority、accept-language、authorization (**Response Headers 一个样拷贝出来小写的)

带冒号的请求头,是http2的一些东西,感兴趣可以去搜

3.3 为什么不建议直接加 authorization header?

为什么不建议把 authorization 到 postman的 Headers,而建议加到 Authorization ? (其他header要加可以在这加)

  1. 这是 Postman 提供的标准化/智能化方式。
    加到Authorization更加方便管理,如前文所述,可以由parent统一管理;你不需要手动输入 Bearer 这个前缀(避免拼写错误或空格遗漏)。切换不同类型的鉴权(如 Basic Auth, AWS Signature)更方便。
  2. 另外,Authorization 里的优先级更高,会覆盖你在Headers加的authorization 请求头

3.4 再补充个 "没用的" 小知识

是不是我们不在 Headers 里填写header在发起请求的时候就没有header呢,不是的,首先,下图提示了有9个隐藏的header,是自动添加的

其次,具体发了什么请求头,还是得看console,这是排查问题的终极利器!! 可以看到确实是9个header

3.5 postman中的变量引用的颜色

前面我们提到,可以使用 {{your_var_name}} 来引用设置到enviroment或者globals,假设你引用的变量是 "可行的",那么是橙色,否则是 "红色"。比如access_token2不存在,所以就是红色。这种情况同样是会出现在 "把变量设置到 pm.environment...但是自己并未定义Enviorment,在引用的地方就是红色无法引用"

相关推荐
和粒科技19 小时前
热重分析仪TG 309 Libra Classic
测试工具
努力努力再努力wz21 小时前
【Lua进阶系列】Lua 调试机制详解:从虚拟机调用栈、错误传播到 debug 库
junit·单元测试·lua
光谱SpectrAI3 天前
打开 Postman 会改 Codex?Windows 上 4 处都没有
postman
炸薯条!3 天前
博客系统测试报告
开发语言·lua
yz_aiks3 天前
Postman 自动给 Claude Code、Codex、Cursor 装插件怎么查和卸载:本机实测 5 处痕迹(Postman 12.34)
安全·postman·ai编程·开发工具·claude code
BuHuaX5 天前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
努力努力再努力wz5 天前
【Lua 入门系列】模块与包(一):从多文件组织到require 运行时加载机制、模块缓存、预加载搜索与 Lua 文件搜索机制
开发语言·junit·lua
UWA5 天前
多人战斗中Lua持续高耗时,是瞬时峰值还是高频调用在作祟
性能优化·lua·游戏开发
努力努力再努力wz6 天前
【Lua 入门系列】从执行模型到事件驱动:一文理解 Lua 有栈协程、挂起恢复与协作式调度
开发语言·lua
努力努力再努力wz6 天前
【Lua 入门系列】Lua数据结构:从 Table 出发,一文串联数组、链表、栈、队列、集合、映射与树的实现原理
数据结构·链表·lua