postman的学习——cookie是如何管理的

本文介绍了在Postman中如何管理cookie以应对登录验证。通过登录接口获取cookie并设置为环境变量,确保在会话期间动态赋值,同时探讨了Postman的cookie自动保存机制及如何禁用此功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:

我目前测试的系统需要登录后方可进行后续的一系列操作

打开F12,查看发起的每一个请求,里面都携带着一个cookie  什么是cookie

 通过postman发送一个添加资源的请求,并未在任何地方配置cookie信息,果然发送请求后又重定向到了登录界

在网页上把cookie复制下来,添加到headers里面,key为Cookie,值就为把刚才复制下来的粘贴进去

再次发送刚才的请求,结果成功了

但由于session会过期(我所测试应用session过期时间是30分钟),所以不能把cookie写死

考虑的解决办法是:

1.先调用一个登录接口

2.从登录接口返回值中把cookie抽取出来设为环境变量   postman如何设置环境变量

3.在后面的接口中采用变量的形式为cookie动态赋值

从下图中可以看到登录接口的response headers中设置了cookie信息,我们可以把这个信息抽取出来 

 但实际上调用了登录接口后,postman自身的cookie管理机制,会把请求中获取到的参数自动保存

点击cookies,可以看到在cookie管理里面,已经自动保存了对应域名下的一些cookie信息

查看请求的headers里面是默认就添加了cookie的 

后续的请求直接调用就是了,无须再在headers里面设置cookie

如果不想使用postman自身的管理机制,在settings里面有个disable cookie jar的选项,将其打开就可以了,默认是关闭的

将该按钮打开以后,可以看到请求headers里面就不会默认添加cookie了 

### Postman 中处理 302 重定向的方法 当遇到 HTTP 响应状态码为 302 的情况时,意味着服务器正在执行临时重定向。对于某些应用程序而言,在接收到此响应后自动跟随新的 URL 是必要的行为。 #### 自动跟随重定向 默认情况下,Postman 不会自动跟随所有的HTTP重定向。如果希望让 Postman 跟随这些重定向,则可以在设置中启用这一选项: 1. 打开 Postman 应用程序; 2. 进入右上角的齿轮图标打开设置页面; 3. 寻找并勾选 `Automatically follow redirects` 选项[^2]。 通过这种方式可以使得 Postman 行为更接近浏览器的行为方式,即在接收到 302 或其他类型的重定向响应时能够自动跳转至目标位置。 #### 处理 Cookie 和 Session 有时即使启用了自动跟随重定向功能仍然无法解决问题,特别是涉及到 session cookies 的时候。这是因为每次请求之间的 cookie 可能未能被正确传递下去。为了确保整个过程中都能保持登录态或其他依赖于 cookie 的信息,应该确认以下几点: - 请求头中包含了正确的 `Cookie` 字段。 - 如果有多个域名间的跳转,请注意跨域资源共享(CORS)策略以及同源政策的影响。 ```bash POST /login HTTP/1.1 Host: example.com Content-Type: application/json Cookie: JSESSIONID=your-session-id; other-cookie=value ``` #### 使用脚本控制流程 除了上述配置外,还可以利用 Pre-request Script 和 Tests 栏目编写 JavaScript 来实现更加复杂的逻辑控制。比如可以通过读取 response headers 获取 Location 并手动发起下一次请求来模拟完整的重定向链路。 ```javascript // 在Tests标签页内添加如下代码片段用于捕获location header pm.test("Check redirect location", function () { var jsonData = pm.response.json(); let locationHeader = pm.response.headers.get('Location'); if (locationHeader !== null){ console.log(`Redirecting to ${locationHeader}`); // 发起新请求 const requestUrl = `${locationHeader}`; pm.sendRequest({ url: requestUrl, method: 'GET', header: { ... } }, function(err, res){ if (!err && res.code === 200){ console.log(res.text()); }else{ throw new Error('Failed to fetch redirected resource.'); } }); } }); ``` 以上方法可以帮助更好地理解和解决与 302 状态码有关的问题,并提高 API 测试效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值