我正在使用Postman来测试和使用 API。
对于登录 url,API 需要发送一个带有username
和password
作为字段的 POST 请求。我这样做了,我得到了200
我已登录的消息的响应。
然后我尝试另一个请求来获取用户数据。但是,我收到未登录的回复。
我意识到这个问题很可能是因为我登录时发送给我的 cookie 没有包含在下一个 Postman 请求中。
所以我的问题是,如何保存和包含 cookie 以供将来的请求使用?
我正在使用Postman来测试和使用 API。
对于登录 url,API 需要发送一个带有username
和password
作为字段的 POST 请求。我这样做了,我得到了200
我已登录的消息的响应。
然后我尝试另一个请求来获取用户数据。但是,我收到未登录的回复。
我意识到这个问题很可能是因为我登录时发送给我的 cookie 没有包含在下一个 Postman 请求中。
所以我的问题是,如何保存和包含 cookie 以供将来的请求使用?
将要使用的 cookie 值存储在全局变量Tests
中。在登录请求选项卡中,写入
postman.setGlobalVariable('key', postman.getResponseCookie("cookieName").value);
Headers
在获取用户请求中将选项卡中的值作为 cookie传递:
Cookie | cookieName={{key}}
我尝试使用 Ashutosh 的答案,但出现错误。我猜这是因为 Postman 的脚本 API 改变了?
无论如何,以下对我有用:
Tests
将返回您要保存的 cookie 的请求选项卡中,写入pm.globals.set('<your key>', pm.cookies.get('<cookie name>'));
cookie
并将相应的值设置为 ,将 cookie 添加到标头中<your cookie name>={{<global variable name>}};
。我在Postman 沙箱 API 参考中找到了相关文档。
(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}` })
享受!
有关如何将标头附加到请求的更多信息
谷歌浏览器中似乎有两个拦截器插件。确保安装正确的。