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

使用Cypress访问需VPN的站点时返回403 Forbidden错误如何解决?

Cypress访问需VPN站点返回403的解决方案

问题根因定位

  • 先手动验证站点可访问性:开启VPN后在普通浏览器/Postman/curl中直接访问目标URL https://private-5bdb3-friendmock.apiary-mock.com/friends
    • 如果无法访问:说明是VPN权限不足或站点本身需要额外身份认证,优先排查VPN和站点权限
    • 如果可以正常访问:说明是Cypress没有自动走VPN代理导致请求被拦截

代理配置方案

Cypress的Node进程默认不会自动读取系统全局代理,需要手动指定代理配置才能走VPN通道,有两种常用配置方式:

方式1:启动时临时传入环境变量

根据你的操作系统,在启动Cypress前配置代理环境变量:

  • Windows CMD
set HTTP_PROXY=http://127.0.0.1:你的VPN代理端口
set HTTPS_PROXY=http://127.0.0.1:你的VPN代理端口
npx cypress open
  • Windows PowerShell
$env:HTTP_PROXY = "http://127.0.0.1:你的VPN代理端口"
$env:HTTPS_PROXY = "http://127.0.0.1:你的VPN代理端口"
npx cypress open
  • Mac/Linux
HTTP_PROXY=http://127.0.0.1:你的VPN代理端口 HTTPS_PROXY=http://127.0.0.1:你的VPN代理端口 npx cypress open

注:如果有无需走代理的内部站点,可以新增NO_PROXY环境变量,值为不需要走代理的域名列表,例如NO_PROXY=localhost,127.0.0.1,internal.test.com

方式2:固定写入Cypress配置文件

在cypress.config.js中直接配置全局代理,无需每次启动传参:

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  // 替换为你实际的VPN代理地址和端口
  proxy: 'http://127.0.0.1:你的VPN代理端口',
  // 其余原有配置保持不变
  e2e: {
    // ...
  }
})

额外排查项

如果配置代理后仍返回403,检查是否需要补充请求身份信息:

  • 对比普通浏览器访问该站点时的请求头,确认是否需要携带Authorization、Cookie等认证字段,在cy.request中手动传入即可:
cy.request({
  method: 'GET',
  url: 'https://private-5bdb3-friendmock.apiary-mock.com/friends',
  headers: {
    // 补充需要的认证头信息
    Authorization: 'Bearer 你的身份令牌'
  }
})
  • 如果只是临时调试不需要403报错打断测试,可以添加failOnStatusCode: false参数绕过状态码校验,但该操作仅为调试用,不建议作为最终解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:54:02