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

Cypress设置Cookie报错‘Sanitizing cookie failed’问题排查

问题原因及解决方案

核心错误原因

cy.setCookie()的expiry参数要求是整数类型的Unix时间戳(单位:秒),但你提供的Cookie中expiry是带小数的浮点数(例如1703771330.714386),这违反了Cypress对Cookie属性的校验规则,触发清理逻辑失败,导致报错。

另外,你贴出的单个报错Cookie里domain字段存在拼写错误(mylocaltestdomain.text应为mylocaltestdomain.test),虽然完整Cookie列表中该字段正确,但如果实际authCookies.txt文件中存在此类错误,也会导致Cookie设置失败。

修复步骤

  1. 转换expiry为整数
    在设置Cookie时,将浮点数类型的expiry转换为整数:

    Cypress.Commands.add( "setWordPressAuthCookies", () => {
      let authCookiesPath = 'development/tmp/authCookies.txt';
      cy.fixture( authCookiesPath, 'utf8' )
      .then( (cookies) => {
        cookies.forEach( (cookie) => {
          cy.setCookie( cookie.name, cookie.value, {
            domain: Cypress.env('currentDomain'),
            path: cookie.path,
            secure: cookie.secure,
            httpOnly: cookie.httpOnly,
            expiry: cookie.expiry ? Math.floor(cookie.expiry) : undefined
          });
        });
      });
    });
    
  2. 校验domain一致性
    确认authCookies.txt中所有Cookie的domain值与Cypress.env('currentDomain')完全匹配,避免拼写错误。

  3. 适配WordPress多站点权限
    WordPress多站点的部分Cookie会限制特定路径(比如/wp-content/plugins),在设置这类Cookie前,先访问对应路径的页面,确保当前上下文的URL与Cookie的path兼容,解决Firefox中的权限拒绝问题。

补充说明

Cypress会严格按照Cookie规范校验属性,expiry必须是整数时间戳,浮点数会被判定为无效值,进而触发Sanitizing cookie failed错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:15:38