You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress的cy.request中更新Cookie至请求头?

问题分析与解决方案

核心问题

  1. 异步执行顺序错误:Cypress命令是异步的,cy.getCookie还未完成Cookie获取,cy.request就已执行,导致cookie变量未被正确赋值。
  2. 语法错误:代码中then((c) => {=多了一个多余的等号,会导致代码执行失败。
  3. 不必要的手动Cookie设置:Cypress的cy.request默认会自动携带当前浏览器上下文的Cookie,通常无需手动在headers里设置Cookie字段。

修正后的代码示例

putCallAdmin(endpoint, requestBody) {
  cy.getCookie("Cookie")
    .should("have.property", "value", cookieToken)
    .then((c) => {
      // 确保请求在获取到Cookie后执行
      cy.request({
        method: "PUT",
        url: endpoint,
        headers: {
          "Content-Type": "application/json",
          // 注意取c.value而非整个c对象,若无需自定义Cookie可直接删除此字段
          Cookie: c.value,
        },
        body: requestBody,
        failOnStatusCode: false,
      }).then((data) => {
        this.printLogs(data.body);
      });
    });
}

额外优化建议

  • 若无需手动控制Cookie,直接移除headers里的Cookie字段,cy.request会自动携带当前上下文的Cookie:
putCallAdmin(endpoint, requestBody) {
  cy.getCookie("Cookie")
    .should("have.property", "value", cookieToken)
    .then(() => {
      cy.request({
        method: "PUT",
        url: endpoint,
        headers: {
          "Content-Type": "application/json",
        },
        body: requestBody,
        failOnStatusCode: false,
      }).then((data) => {
        this.printLogs(data.body);
      });
    });
}
  • 若需要清除旧Cookie再设置新值,可在cy.getCookie前添加cy.clearCookies()确保上下文干净:
putCallAdmin(endpoint, requestBody) {
  cy.clearCookies(); // 清除所有Cookie
  // 此处可添加cy.setCookie设置新Cookie的逻辑
  cy.getCookie("Cookie")
    .should("have.property", "value", cookieToken)
    .then((c) => {
      cy.request({
        method: "PUT",
        url: endpoint,
        headers: {
          "Content-Type": "application/json",
          Cookie: c.value,
        },
        body: requestBody,
        failOnStatusCode: false,
      }).then((data) => {
        this.printLogs(data.body);
      });
    });
}

内容的提问来源于stack exchange,提问作者Vince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:50:16