如何在Postman中存储和重用cookie?

时间:2014-12-01 10:28:02

标签: cookies httprequest session-cookies postman

我正在使用Postman来测试和使用API​​。

对于登录网址,API要求发送包含usernamepassword字段的POST请求。我执行此操作,并收到200响应,其中包含我已登录的消息。

然后我尝试另一个获取用户数据的请求。但是,我得到了一个我没有登录的回复。

我意识到这个问题很可能是因为我登录时发送给我的cookie未包含在下一个Postman请求中。

所以我的问题是,如何为将来的请求保存和包含cookie?

5 个答案:

答案 0 :(得分:7)

将要使用的cookie值存储在全局变量中。在登录请求的Tests选项卡中,写入

postman.setGlobalVariable('key', postman.getResponseCookie("cookieName").value);

在获取用户请求中将Headers标签中的值作为Cookie传递:

Cookie | cookieName={{key}}

答案 1 :(得分:4)

答案 2 :(得分:0)

似乎谷歌浏览器中有两个Interceptor插件。确保安装correct one

答案 3 :(得分:0)

我尝试使用Ashutosh的答案,但出现错误。我猜这是因为Postman的脚本API发生了变化?

无论如何,以下对我有用:

  1. 在请求的Tests标签中,该标签将返回您要保存的Cookie,请写
pm.globals.set('<your key>', pm.cookies.get('<cookie name>'));
  1. 然后,如Ashutosh的答案所述,通过将键设置为cookie,并将对应值设置为<your cookie name>={{<global variable name>}};,将cookie添加到标题中。

我在Postman sandbox API reference上找到了相关文档。

答案 4 :(得分:0)

于2020年12月18日更新,使用没有拦截器的本地Postman应用) 读取cookie的传统方式对我不起作用pm.cookies.get('<cookie name>') 。这是一种自动将身份验证Cookie附加到集合中所有请求的解决方法:

// The test scripts below run after the api /login returns the response

const authCookie = pm.response.headers.idx(3).value
/* 
pm.response.headers.idx(3) is equal to:
{key: "Set-Cookie", value: "xs=eyJhb; Max-Age=3600; Path=/; Expires=Fri, 18 Dec 2020 04:40:34 GMT; HttpOnly; Secure; SameSite=None"} 
*/

const token = authCookie.substring(3, authCookie.indexOf(';'))
pm.collectionVariables.set('xs_value', token);

然后将此预请求脚本添加到整个集合中:

// Scripts below runs before any request within a collection is sent

const token = pm.collectionVariables.get('xs_value')
pm.request.headers.upsert({ key: 'Cookie', value: `xs=${token}` })

享受!

有关如何attach headers to requests

的更多信息