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设置失败。
修复步骤
转换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 }); }); }); });校验domain一致性
确认authCookies.txt中所有Cookie的domain值与Cypress.env('currentDomain')完全匹配,避免拼写错误。适配WordPress多站点权限
WordPress多站点的部分Cookie会限制特定路径(比如/wp-content/plugins),在设置这类Cookie前,先访问对应路径的页面,确保当前上下文的URL与Cookie的path兼容,解决Firefox中的权限拒绝问题。
补充说明
Cypress会严格按照Cookie规范校验属性,expiry必须是整数时间戳,浮点数会被判定为无效值,进而触发Sanitizing cookie failed错误。
内容的提问来源于stack exchange,提问作者Zeth
相关产品推荐
相关产品推荐

