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

db2dz4w8  于 2022-11-07  发布在  Postman
关注(0)|答案(4)|浏览(338)

我使用Postman来测试和使用API。
对于登录url,API要求发送一个POST请求,其中包含usernamepassword字段。
然后我尝试另一个请求来获取用户数据。但是,我得到的响应是我没有登录。
我意识到这个问题很可能是因为我登录时发送给我的cookie没有包含在下一个 Postman 请求中。
所以我的问题是,我如何保存和包含cookie以供将来请求?

dhxwm5r4

dhxwm5r41#

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

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

Headers选项卡中的值作为cookie沿着传递到get user请求中:

Cookie | cookieName={{key}}
js5cn81o

js5cn81o2#

我尝试使用Ashutosh的答案,但得到了一个错误。我猜这是因为 Postman 的脚本API改变了?
无论如何,以下几点对我很有效:
1.在将返回您要保存的cookie的请求的Tests选项卡中,写入

pm.globals.set('<your key>', pm.cookies.get('<cookie name>'));

1.然后,如Ashutosh的答案中所述,通过将键设置为cookie并将相应的值设置为<your cookie name>={{<global variable name>}};,将cookie添加到标头中。
我在Postman sandbox API reference上找到了相关文档。

vc9ivgsu

vc9ivgsu3#

(使用不带拦截器的原生Postman应用程序)传统的阅读cookie的方法对我不起作用pm.cookies.get('<cookie name>')。下面是一个解决方法,它可以自动将auth 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的更多信息

inkz8wg9

inkz8wg94#

似乎有两个拦截器插件在谷歌浏览器。请确保安装的correct one

相关问题