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

K5 *_*ser 18 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);
}
Run Code Online (Sandbox Code Playgroud)

pm.cookies阵列是空的.然而在控制台中,GET调用然后传递cookie.

还有postman.getResponseCookies,这是null(我假设因为我们在预请求部分,而不是在测试部分)

一个答案建议调用postman-echo服务来删除cookie.我还没有对此进行调查,但感觉不对.

小智 7

根据文档pm API 参考,pm.cookieAPI 仅适用于“测试”选项卡,不适用于“预请求脚本”。

以下项目仅在测试脚本中可用。

下午饼干

...

看来你必须坚持使用这种方法:Interceptor Blog post

  • 截至 2020 年这一天,Postman 确实允许在预请求脚本中使用 pm.cookies.jar(),因此 @aaron 的答案现在似乎更合适。 (2认同)

aar*_*ron 5

自 2019/08 起,新版本现已支持该功能,请在此处查看更多示例:以编程方式删除 cookie · Issue #3312 · postmanlabs/postman-app-support

先决条件

必须将要授予程序访问权限的 Cookie 域列入白名单

清除所有cookie

const jar = pm.cookies.jar();

jar.clear(pm.request.url, function (error) {
  // error - <Error>
});
Run Code Online (Sandbox Code Playgroud)

获取所有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
});
Run Code Online (Sandbox Code Playgroud)

获取特定的cookie

const jar = pm.cookies.jar();

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

  • 谢谢!我注意到需要将域列入白名单才能访问 cookie:https://learning.postman.com/docs/postman/sending-api-requests/cookies/#whitelisting-domains-for-programmatic-access-of-cookies (2认同)