邮递员:你如何删除预请求脚本中的cookie?

时间:2017-06-20 17:54:52

标签: cookies session-cookies postman

所有邮递员cookie管理的答案我已经看过,可以参考浏览器扩展程序(打开chrome,删除cookies即拦截器等)或使用应用程序,使用UI手动管理cookie。

我想在我的预请求代码中删除某些cookie,作为编写API测试脚本的一部分。 (以编程方式删除它们)

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。我还没有调查过这个问题,但感觉不对。

3 个答案:

答案 0 :(得分:5)

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

清除所有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>
});

答案 1 :(得分:2)

根据文档pm API referencepm.cookie API仅适用于“测试”标签,而不适用于预请求脚本。

  

以下项目仅适用于TEST SCRIPTS。

     

pm.cookies

     

...

您似乎必须坚持使用此方法:Interceptor Blog post

答案 2 :(得分:-1)

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

enter image description here

然后,如果我想自己管理cookie,我在集合上创建了第一个请求,并使用“测试”选项卡只是为了收集所需的cookie,并将它们保存在变量中。

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