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

Cypress切换页面后user-agent header丢失 如何全局配置使其全页面生效

问题原因

你在cy.visit中设置的headers仅对本次页面访问请求生效,后续点击操作触发的页面跳转请求不会继承该配置,因此会出现UA丢失的问题。cypress.json配置不生效通常是版本适配问题导致,以下是两种可落地的解决方案:

方案1:全局拦截所有请求统一注入User-Agent(兼容性最高,所有版本通用)

这种方案不管页面是通过cy.visit打开还是点击操作跳转,所有请求都会自动携带自定义UA,全局生效。
在Cypress全局支持文件中添加拦截逻辑:

  • Cypress 10及以上版本:修改cypress/support/e2e.js
  • Cypress 10以下旧版本:修改cypress/support/index.js

添加代码如下:

// 替换为你需要的自定义User-Agent
const CUSTOM_USER_AGENT = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"

// 全局所有测试用例执行前都会触发该逻辑
beforeEach(() => {
  // 拦截所有请求,统一修改UA header
  cy.intercept('**/*', (req) => {
    req.headers['user-agent'] = CUSTOM_USER_AGENT
  })
})

如果不需要全局所有测试生效,只需要单个测试套件生效,把上述beforeEach逻辑放到对应测试文件的describe块内即可。

方案2:修正配置文件写法适配Cypress版本

你之前配置cypress.json不生效大概率是Cypress版本不匹配导致的:

  • 10以下旧版本:可以直接在cypress.json中添加userAgent参数
  • 10及以上新版本:配置文件已更名为cypress.config.js/cypress.config.ts,配置示例如下:
const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    // 替换为你需要的自定义User-Agent
    userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
    // 保留你的其他原有配置
  }
})

注意事项

拦截方案的优先级高于配置文件的UA设置,两者同时存在时,请求最终携带的是拦截逻辑中设置的UA。

内容的提问来源于stack exchange,提问作者Sezer Dönmez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:39:03