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

升级Cypress版本后Headers authorization失效无法登录如何解决

Cypress 6.x升级到8.3.1后setAuth自定义命令失效解决方案

核心原因

Cypress 7.0及以上版本对cy.intercept()的请求处理逻辑做了破坏性调整:6.x版本中修改请求参数后会隐式将修改后的请求继续发送,而7.0+版本要求修改请求后必须显式调用req.continue(),修改的请求头才会实际生效。

修复后的自定义命令代码

Cypress.Commands.add("setAuth", () => {
    // 8.x版本对URL匹配规则更严格,使用通配符适配不同环境域名
    cy.intercept('**/privat*', (req) => {
        req.headers['authorization'] = 'Bearer token'
        // 新增该行,显式提交修改后的请求
        req.continue()
    })
})

可选调试步骤

  • 打开Cypress测试运行器的「网络」面板,找到对应/privat接口的请求条目,查看请求头中是否实际携带了authorization字段,确认是头未注入还是后端鉴权逻辑其他问题
  • 在intercept回调中添加打印逻辑:console.log('拦截到请求', req.headers),打开Cypress内置的开发者工具,查看回调是否被触发、头修改逻辑是否执行
  • 检查是否存在其他优先级更高的intercept规则匹配了该请求,导致当前setAuth的拦截逻辑被覆盖

更稳定的登录态注入方案

如果你的应用登录态是存储在LocalStorage/ Cookie中,更推荐直接注入存储值,无需拦截所有请求:

// 注入LocalStorage存储的token
Cypress.Commands.add("setAuth", () => {
    cy.window().then(win => {
        win.localStorage.setItem('access_token', '你的实际token')
    })
    // 如果是Cookie存储的登录态,用下面的方法
    // cy.setCookie('auth_token', '你的实际token', { domain: '你的应用域名' })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:30:03