Basic Auth适用于服务端明确要求Authorization: Basic base64(username:password)的场景,如ES 7.x启用X-Pack后;需准确填写无空格的用户名密码,避免特殊字符解析失败,且不可与Bearer Token或API Key混用。

Postman 里选错认证方式,90% 的 401 Unauthorized 就这么来的——不是接口挂了,是 Authorization 头压根没按服务端预期生成。
Basic Auth 什么时候该用、怎么填才不翻车
它只适用于服务端明确接受 Authorization: Basic base64(username:password) 的场景,比如 Elasticsearch 7.x 启用 X-Pack 安全后、或内部测试 API。别看到“要登录”就无脑选它。
- 用户名和密码必须填对,且不能含多余空格;Postman 不会帮你 trim
- 如果密码含特殊字符(如
@、/),Base64 编码后仍可能被服务端解析失败,建议先用脚本验证:btoa("user:p@ss/wd")看结果是否符合预期 - ES 集群若启用了 HTTPS,
es_host变量必须以https://开头,否则 Postman 会静默降级为 HTTP,触发连接拒绝 - 别把 Basic Auth 和 Bearer Token 混用:前者是
Basic xxx,后者是Bearer xxx,写错一个字就 401
Bearer Token 不是粘贴完就完事,变量引用才是关键
Token 通常有有效期,硬编码在请求里等于埋雷。Postman 的 {{token}} 变量机制不是可选项,是必选项。
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
- 登录接口返回的字段名可能不是
access_token,常见还有result.token、data.jwt,得看响应体结构再写pm.response.json().result.token - Pre-request Script 中设置变量时,记得加判空:
if (responseJson?.result) pm.environment.set("token", responseJson.result);,否则 token 为空会导致后续所有请求带Bearer(后面没值) - Collection 级别的 Authorization 类型必须设为
Bearer Token,且 Token 字段填{{token}},不是{{accessToken}}或其他拼写——变量名大小写敏感 - 如果 Token 是 JWT,可以用在线工具(如 jwt.io)快速确认是否已过期,避免白忙活
API Key 认证不是“填个字符串”那么简单
ES 7.15+ 的 ApiKey <id>:<api_key></api_key></id> 是 Base64 编码后的组合值,不是直接拼接。Postman 不提供原生支持,得手动构造或用脚本。
- ES 返回的
id和api_key必须原样使用,中间冒号:不能漏,也不能多加空格 - 不能选
Bearer Token类型然后填ApiKey xxx:yyy—— 这会变成Bearer ApiKey xxx:yyy,服务端不认识 - 正确做法:选
No Auth,手动在 Headers 里加Authorization→ApiKey xxx:yyy;或者用 Pre-request Script 动态注入:pm.request.headers.add({key:"Authorization", value:"ApiKey " + pm.environment.get("api_id") + ":" + pm.environment.get("api_key")}); - API Key 有独立过期时间(如
"expiration": "7d"),过期后请求会返回401,但错误信息里不会提示“已过期”,只会说“invalid API key”
别忽略 Inherit auth from parent 的隐性影响
集合或文件夹设了认证,子请求默认继承——这很省事,也很危险。一旦父级认证配置错,所有子请求全跪。
- 检查当前请求右上角 Authorization 类型下拉框:显示
Inherit auth from parent时,实际生效的是它上方最近一级(集合/文件夹)的配置,不是当前请求页签里的内容 - 调试时想临时绕过父级认证?别删父级设置,直接在当前请求里选
No Auth或换一种类型,这样不影响其他人 - 团队协作中,有人在集合里设了 Basic Auth,有人在文件夹里覆盖成 Bearer Token,结果部分接口跑不通——这时要逐级展开左侧栏,看每个层级的 Authorization 设置图标是否亮起
- 环境变量未加载成功时,
{{xxx}}会原样发出去(比如发Bearer {{token}}),服务端收不到有效值,但 Postman 控制台不报错,得靠响应头或日志反推
最常被跳过的一步:调用前先用 curl -v 或浏览器开发者工具抓包,比对 Postman 发出的 Authorization 头和服务端文档要求是否一字不差。Base64 多一位、冒号少一个、Bearer 写成 Bearar——这些细节错一点,认证就断在第一关。

















