如何获取 httpOnly(安全)cookie TestCafe?
Posted
技术标签:
【中文标题】如何获取 httpOnly(安全)cookie TestCafe?【英文标题】:How to get httpOnly (secure) cookies TestCafe? 【发布时间】:2020-05-14 09:20:45 【问题描述】:出于测试目的,我必须在成功通过身份验证后立即检索 HttpOnly 和 Secure cookie。正如预期的那样,ClientFunction(() => document.cookie)
不起作用。由于 TestCafe 是一个代理,因此应该有一种方法可以访问这种 cookie。我怎样才能到达那里?
【问题讨论】:
【参考方案1】:目前,TestCafe 不具备获取安全 cookie 的能力。我们对此有一个功能建议。请关注https://github.com/DevExpress/testcafe/issues/4428 问题。
【讨论】:
您实际上可以通过拦截 http 请求来解决这个问题。我通过记录请求并在选项中指定标头和正文来访问安全和 httpOnly cookie(因为我需要正文中的 JSON 有效负载以及 cookie)。【参考方案2】:我的解决方法是使用 RequestLogger。例如:
import Selector, RequestLogger from 'testcafe';
// Want everything from example.com
const logger = RequestLogger(/example.com/,
logResponseHeaders: true,
logResponseBody: true
// Do not set stringify response body if your response
// comes as gzip or brotli or whatever, instead you
// will need to use Node's zlib to unzip it and read it
);
fixture `My test`
.page `https://example.com`
.requestHooks(logger);
test(`Log in and retrieve cookies`, async t =>
await t
// Do things here
.click(...)
const requests = logger.requests
for (const req of requests)
console.log('Headers: ', req.response.headers)
for (const cookie of req.response.headers['set-cookie'])
// You will have to parse the cookie yourself
console.log(cookie)
);
【讨论】:
谢谢@James-Young。我的做法与解决方法完全相同。但这仍然很痛苦,因为我需要为每个夹具使用 RequestLogger 这当然很痛苦,不是吗?我想我需要分叉 testcafe,所以我以后不必使用这个解决方法,因为 TestCafe 需要很长时间才能修复它(问题已经开放了两年!)以上是关于如何获取 httpOnly(安全)cookie TestCafe?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JavaScript 读取 HttpOnly cookie
了解安全/httponly cookie 如何用于 Java 应用程序