Postman不自动发送Cookie主因是域名安全策略,默认拒绝向127.0.0.1等IP地址发送Cookie,需改用localhost或手动在Headers中添加Cookie字段。

Postman为什么没自动发Cookie:域名安全策略是主因
Postman默认拒绝向 127.0.0.1 这类IP地址自动发送Cookie,这是内置的安全限制,不是Bug。它把这类地址视作“不安全上下文”,哪怕你已经在Cookies面板里手动添加了 JSESSIONID=abc123,请求发出时Header里依然不会出现 Cookie 字段。
常见现象包括:
- Fiddler/Wireshark抓包确认请求Header中完全缺失
Cookie行 - Cookies面板显示已添加,但Send后响应仍是401或“未登录”
- 同一请求换成
localhost域名就立刻生效
解决方式只有两个有效路径:
- 把URL里的
127.0.0.1:8080改成localhost:8080(前提是系统hosts文件中存在127.0.0.1 localhost映射) - 不依赖自动携带,改用Headers手动加:点击右上角眼睛图标打开隐藏选项 → 在Headers里新增键
Cookie,值填JSESSIONID=abc123; PHPSESSID=xyz789
Cookie管理器没生效:检查作用域和会话隔离
Postman的Cookie管理器不是全局生效的,它按域名+协议+端口三级匹配。比如你在 http://localhost:3000 登录成功,保存了Cookie,但后续请求发往 http://localhost:3001 或 https://localhost:3000,这些Cookie都不会被自动带上。
容易忽略的点:
- 协议不同(
httpvshttps)会导致Cookie隔离 - 端口不同(
:8080vs:8081)算不同域名 - 请求标签页(Tab)之间不共享Cookie,除非你主动在Cookies面板里为该域名添加
- Collection Runner运行时使用的是独立会话,不会继承当前Tab的Cookie状态
验证方法:发送请求后,点击Send按钮下方的 Cookies 链接,看列出的Cookie是否包含你期望的键(如 sessionid),且Domain列是否与当前请求URL完全一致。
手动加Cookie时格式出错:值必须是原始字符串,不能带空格或换行
在Headers里手动添加 Cookie 头时,值字段必须是标准HTTP Cookie字符串格式,例如:
JSESSIONID=ABC123456789; Path=/; HttpOnly
但实际只需传关键部分:JSESSIONID=ABC123456789。其他属性(Path、Domain、HttpOnly)由服务端Set-Cookie下发时定义,客户端请求时**不能**也不需要重复声明。
常见错误:
- 复制浏览器Network面板里的完整
Cookie行,里面含有多余空格或换行符 - 误把多个Cookie用逗号分隔(正确是用分号
;) - 值里混入中文、特殊符号未URL编码(如
user=张三应为user=%E5%BC%A0%E4%B8%89) - 粘贴时带入不可见Unicode字符(建议在纯文本编辑器中先清理再粘贴)
Interceptor插件已失效:别再依赖Chrome同步Cookie
Postman Interceptor插件自2023年起已停止维护,Chrome 110+版本彻底禁用其通信能力。现在启用该插件只会显示“无法连接到浏览器”,不会同步任何Cookie。
如果你还看到教程推荐安装Interceptor,说明内容已过时。当前可靠方案只有:
- 用登录接口触发服务端Set-Cookie,让Postman自动存入Cookie管理器(需确保域名匹配)
- 从浏览器开发者工具 → Application → Cookies 中手动复制键值对,粘贴到Postman Headers里
- 用Pre-request Script调用前置登录接口并提取响应头中的
Set-Cookie,再写入当前请求的Cookie管理器(适合自动化流程)
最后提醒一句:HttpOnly 属性不影响Postman是否发送Cookie,它只限制JavaScript读取;真正卡住你的,永远是域名匹配、协议一致性、以及那个藏在hosts文件里的 localhost 映射。











