要发“干净”的未登录请求,需三步:关闭Settings→General中的Enable Cookie Jar;点击右上角Cookies图标清除对应域名所有Cookie;在Headers中手动删除Cookie、Authorization等身份头,或用Pre-request Script移除。

Postman 怎么发一个“干净”的未登录请求
想测接口的未授权行为(比如 401/403),但 Postman 总带着上次登录留下的 Cookie 或 Authorization 头,结果请求总被放行——这不是你想要的“未登录”状态。真正的未登录请求,是彻底清空会话上下文、不携带任何身份凭证的裸请求。
为什么新请求还会带 Cookie
Postman 默认复用浏览器级会话或内部会话池,尤其开启过 Interceptor、用过登录接口、或在同一个 Collection 里反复调试时,Cookie 很可能被自动注入到后续请求中。这不是 bug,是它的会话管理机制在起作用。
-
Interceptor插件一旦启用,会持续同步 Chrome 的 Cookie,关掉插件或禁用该开关才能切断来源 - Postman 自身的
Cookies管理器(Settings → Cookies)里可能存有域名匹配的持久化 Cookie,需手动清除 - 如果请求用了
Environment变量,而变量里写了{{auth_token}}或{{cookie_header}},也会悄悄带上
三步确保请求“真·未登录”
不是删掉 header 就完事,得从源头掐断所有身份痕迹:
- 点击右上角
Cookies按钮(小饼干图标),选中对应域名 → 点Remove All;若没看到域名,先发一次请求触发加载,再清 - 检查请求的
Headers标签页,手动删掉所有可疑项:Cookie、Authorization、X-Auth-Token、Session-ID等 - 进
Settings → General,关闭Enable Cookie Jar(关闭后 Postman 不再自动存储/发送 Cookie)
需要反复切换登录/未登录状态怎么办
硬清 Cookie 太麻烦?用两个隔离环境更可靠:
- 建两个
Environment:一个叫logged_in(含auth_token和cookie变量),另一个叫anonymous(空变量) - 为未登录请求显式设置
Headers:加一条Cookie:(值为空字符串),可强制覆盖任何隐式 Cookie - 或者在
Pre-request Script中写:pm.request.headers.remove("Cookie"); pm.request.headers.remove("Authorization");
复杂点在于 Cookie 的作用域(domain/path)和 HttpOnly 属性——Postman 无法读取 HttpOnly Cookie,但只要它存在且匹配,就可能被自动带上;所以最稳妥的方式,仍是关闭 Cookie Jar + 手动清理 + 显式清空 header。

















