使用代理解决本地调不通测试环境接口问题

前言

在本地调试前端项目,但是测试环境的接口调不通怎么办? 其实就是接口跨域了,例如我们从localhosta.test.com当然调不通,可以通过cors等解决跨域的办法办法来解决。但是如果存在一些还不能解决的情况,我们可以通过代理的方式:在浏览器访问a.test.com,如果能访问到localhost:8081的前端资源,但是会访问a.test.com的接口,那么对于后端而言,请求方还是a.test.com,那么也就不存在跨域,接口就能调通了。我们可以通过whistleProxy SwitchOmega两个工具达到这种效果。
whistle是一个抓包和代理工具,它会在本地起一个代理服务。
Proxy SwitchOmega是一个代理管理的工具,一般我们可能本地挂了梯子或其他代理,多个代理间切换麻烦,还有DNS缓存问题,我们可以使用Proxy SwitchOmega来管理。

步骤:

安装和启动whistle:

css 复制代码
npm i whistle -g
w2 start

访问whistle代理服务127.0.0.1:8899 ,添加Rules(为什么直接修改本地host不行?因为无法指定端口):

可以看到经过代理的请求的详情:

如果代理https并且想看到抓包内容的话,还需要安装ca证书,也很简单:

安装chrome扩展Proxy SwitchOmega

有多种代理模式可以选择,选择proxy则为我们设置好的whistle代理,选择系统代理则为使用其他的默认代理,切换起来很方便:

是否有本地开发服务器代理

1、如果我们的项目本地开发服务没有使用代理:

yaml 复制代码
//  vite.config.js
server: {
    port: 8081,
    host: true,
    hmr: {
        overlay: false
    }
},

需要在whistleRules添加代理接口请求的规则:

比如测试环境为a.test.com

perl 复制代码
// 表示只代理静态资源到本地,接口还是走测试环境
https://a.test.com/api  https://a.test.com/api
https://a.test.com  http://127.0.0.1:8081

2、如果我们的项目本地使用了代理:

yaml 复制代码
//  vite.config.js
server: {
    port: 8081,
    host: true,
    proxy: {
        "/api": {
            // 测试环境域名
            target: "https://a.test.com",
            changeOrigin: true
        },
    },
    hmr: {
        overlay: false
    }
},

这时,whistleRules不需要再添加对/api的额外处理了:

perl 复制代码
https://a.test.com  http://127.0.0.1:8081

结果

现在我们在浏览器打开 a.test.com 就可以对我们的代码进行调试了,在项目中打一个console,可以看到访问的就是我们本地的前端资源。

相关推荐
不好听6137 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus7 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子8 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech8 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
触底反弹8 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试
小林ixn9 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
醇氧10 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
qetfw12 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
甲维斯12 小时前
我要开始吹牛逼了!Kimi K3 “宇宙无敌”!
前端·人工智能