cypress 浏览器发送所有请求中的所有 cookie

问题描述 投票:0回答:1

我正在使用 cypress 进行 e2e 测试,并启用了会话存储功能
直到最近,项目中仅有的两个 cookie 是“access_token”和“refresh_token”。现在我又添加了 2 个 cookie,它们存储一些数据,当您使用网站时,这些数据将自动写入和读取。

使用任何本机浏览器(chrome、firefox、edge)浏览网站时,前端不会在请求中向后端发送 cookie。只有“access_token”的内容将用作身份验证承载。
当在 cypress 内部的任何浏览器中浏览或让 cypress 自动浏览时,所有存在的 cookie 都将添加到每个发送的请求中。不仅是

cy.request()
发送的请求,还有前端原生发送的请求。

这是一个问题,因为标头大小变得很大并且后端不会接受它。快速修复方法是增加后端接受的标头大小,但我宁愿根本不发送 cookie。

有没有办法告诉 cypress 发送哪些 cookie 或完全阻止发送 cookie?我并不关心哪些 cookie 将存储在 cypress 会话中。仅发送哪些 cookie。

编辑:

所有 cookie 均使用“严格”的相同站点设置。
当针对已部署的系统进行测试时,使用 https,但证书无效。
当针对本地运行的系统进行测试时,使用 http。

仅当针对本地系统(localhost)运行 cypress 时才会发送 cookie。

cookies browser cypress
1个回答
0
投票

使用samesite=strict意味着cookie永远不会包含在对其他站点的请求中,所以我想这是你的核心问题。您需要使用 Samesite=none 来跨站点获取包含在 HTTP POST 请求中的 Cookie。

为了补充这个答案,我写了一篇博客文章,更详细地介绍了这个主题:调试 cookie 问题

© www.soinside.com 2019 - 2024. All rights reserved.