A
Dev Server 代理
是什么。构建工具里的一张代理表——Vite、webpack-dev-server 之类把
/api 转发到另一个源,于是浏览器只看到一个源,CORS 根本不会进入对话。
真正擅长什么。它在仓库里,能被提交、能被评审,全团队一致;不需要装扩展;是一个项目本地开发的正确默认值。
到哪一步失效。它按项目、按 Dev Server 生效:换一个仓库就要重新配一遍并重启。它只看到发往这台 Dev
Server 的流量,页面直连第二个域名时它管不到。而且它只转发——不改写响应、不 Mock
一个还不存在的接口、也不能按需注入延迟。
与浏览器规则的关系。互补。项目日常开发继续用仓库里那张代理表;只属于你个人的跨环境场景交给浏览器规则。
B
系统级抓包代理
是什么。本机上的一个进程,操作系统或浏览器被设置为经由它出口(这一类别里的开源参照是
mitmproxy)。要读取 HTTPS,它必须成为客户端信任的证书颁发机构。
真正擅长什么。覆盖范围无人能敌:浏览器、手机
App、桌面程序、服务端进程全在一处,请求响应可完整检视,能打断点、能脚本化、能存成会话文件。
到哪一步失效。安装成本就是答案。装一个受信任的根证书会改变你机器的安全态势,部分客户端做了证书
pinning,公司电脑上还可能要走审批。它是系统级的:你停止调试之后它仍在拦截,这类工具常常是你还没信过结果就已经关掉了。
与浏览器规则的关系。浏览器规则做不到系统级流量,它也不假装能做。它放弃了这个覆盖范围,换来的是不需要装证书、不动系统设置、也没有「离开浏览器后记得关」这件事。
C
API 客户端
是什么。一个独立工具:手工搭一个请求、发出去、读响应,配集合、环境与 Mock 服务。
真正擅长什么。契约工作。和后端同学一起设计并确认接口形状,维护一份可共享的请求库,在没有任何 UI
的情况下验证一个接口。
到哪一步失效。响应到达的是客户端,不是你的应用代码。于是 UI 分支、axios
拦截器、错误处理、重试逻辑全都未被验证。页面拿到载荷之后做的事——cookie、重定向、同源凭据、流式读取——都在客户端能证明的范围之外。
与浏览器规则的关系。按顺序配合最好。在客户端里设计好 Mock,把同一份响应体贴进规则的 Mock
响应,让真实页面去消费它。这个组合补上了两边单独都补不了的缺口。
D
改请求头的扩展
是什么。轻量的浏览器扩展,按 URL 模式重写请求头或响应头——底层常常就是声明式请求重定向 API。
真正擅长什么。一次性的头部改动:accept-language、覆盖
cache-control、加个调试开关。概念少,立刻生效。
到哪一步失效。请求头就是它的全部作用面。它通常不替换请求体、不能返回你自定义的 Mock
响应、没有单请求延迟或重试,也碰不到 WebSocket 连接。
与浏览器规则的关系。本扩展对「只重写
URL」的那部分规则用的是同一套网络层机制,规则一旦需要改请求头、请求体或响应,再叠加后台服务线程通道。所以实践上是它的超集,代价是要学的东西更多。
E
改应用自己的配置
是什么。最诚实的做法:改 base URL、改环境文件、改源码里的 token,重新构建,让应用直连另一个环境。
真正擅长什么。对所有人可复现,能在 CI 里跑,机器重装之后还在。差异是长期存在时,就该放在这里。
到哪一步失效。每次尝试一个构建循环,一处必须记得回滚的 diff,还有一个绕不开的 CORS
问题——页面现在调的是外部域名,后端必须放行,于是变成一次网关改动加一次重新部署。
与浏览器规则的关系。规则就是同一次编辑的临时版本,只不过发生在源码树之外。对请求的效果相同,评审时没有忘回滚的风险。