Postman :您如何删除预请求脚本中的cookie?

vsmadaxz  于 2023-11-18  发布在  Postman
关注(0)|答案(3)|浏览(198)

我所看到的所有 Postman cookie管理的答案都是指浏览器扩展(打开Chrome,删除cookie viz拦截器等)或使用应用程序,使用UI手动管理cookie。
作为编写API测试脚本的一部分,我想删除预请求代码中的某些Cookie。(以编程方式删除它们)
Sandobx API文档提到了pm.cookies,因此我尝试

if (pm.cookies !== null) {
   console.log("cookies!");
   console.log(pm.cookies);
}

字符串
但是pm.cookies数组是空的,但是在控制台中,GET调用传递了一个cookie。
还有postman.getResponseCookies,它是空的(我假设是因为我们在预请求部分,而不是在测试部分)
One answer建议调用postman-echo服务删除cookie。我还没有调查过这个问题,但感觉不对。

tpgth1q7

tpgth1q71#

新版本现在支持自2019/08以来,请在此处查看更多示例:Delete cookies programmatically · Issue #3312 · postmanlabs/postman-app-support

前提条件

必须将Cookie域列入白名单,才能授予访问权限。

清除所有cookie

const jar = pm.cookies.jar();

jar.clear(pm.request.url, function (error) {
  // error - <Error>
});

字符串

获取所有cookie

const jar = pm.cookies.jar();

jar.getAll('http://example.com', function (error, cookies) {
  // error - <Error>
  // cookies - <PostmanCookieList>
  // PostmanCookieList: https://www.postmanlabs.com/postman-collection/CookieList.html
});

获取特定cookie

const jar = pm.cookies.jar();

jar.get('http://example.com', 'token', function (error, value) {
  // error - <Error>
  // value - <String>
});

j2cgzkjk

j2cgzkjk2#

根据文档pm API referencepm.cookie API仅用于测试选项卡,而不用于预请求脚本。
以下项目仅在测试手册中提供。
pm.cookies
...
看起来你必须坚持这个方法:Interceptor Blog post

3phpmpom

3phpmpom3#

我知道这是一个很晚的答案,但对于我的情况,我不想使用cookie来启动收集的执行,我只需要取消选中选项“收集运行后保存cookie”,并选中Runner面板上的选项“不使用存储的cookie运行收集”。


的数据
然后,如果我想自己管理cookie,我在集合上创建了第一个请求,并使用Tests选项卡来收集我想要的cookie,并将它们保存在变量中。

pm.environment.set('cookie', pm.cookies.get('csrftoken'))
pm.environment.set('sessionid', pm.cookies.get('sessionid'))

字符串

相关问题