rest client等api测试插件不读vscode的http.proxy,只认自身配置(如rest-client.proxy)或系统环境变量,且默认绕过localhost/127.0.0.1,导致本地api请求被拒绝。

VSCode 里 API 测试插件(比如 rest-client、Thunder Client 或 HTTP Request)突然发不出请求、报错 net::ERR_CONNECTION_REFUSED 或 Failed to fetch,大概率不是代理没开,而是这些插件自己读了错误的代理配置,或者和全局 http.proxy 冲突导致请求被双重转发或绕过。
API 测试插件是否真的走 VSCode 的 http.proxy?
不走。绝大多数 API 测试插件(包括 rest-client 和 Thunder Client)**完全忽略 http.proxy 设置**,它们直接调用 Node.js 的 https.request 或底层 fetch,只认系统环境变量(HTTP_PROXY / HTTPS_PROXY)或自己插件内的代理配置项。
-
rest-client:靠rest-client.proxy配置项控制,值如"http://127.0.0.1:7890";不填则直连,不 fallback 到http.proxy -
Thunder Client:在插件设置里有独立的thunder-client.proxy,支持 HTTP/SOCKS5,且必须显式开启开关thunder-client.useProxy -
HTTP Request(原http-client):读http.proxy,但仅限于 VSCode 1.75 之前版本;新版本已弃用该行为,改用自身http-client.proxy - 若你同时设了系统环境变量和插件内 proxy,而两者指向不同代理(比如一个走 Clash,一个走 Fiddler),就可能因 TLS 握手失败或认证不一致导致静默超时
为什么开了系统代理,rest-client 还是连不上 internal API?
因为 rest-client 默认把 localhost、127.0.0.1 和 .local 域名自动加入 bypass 列表——哪怕你写了 "rest-client.proxy": "http://127.0.0.1:7890",它也不会把 http://localhost:3000/api 送过去。
- 绕过行为不可关闭,硬编码在插件源码里(截至
rest-clientv0.24.7) - 验证方式:在
.http文件里写GET http://192.168.1.100:3000/api(局域网 IP),看是否能通;若通,说明就是 bypass 导致 - 临时解法:改 hosts 把服务域名映射到非本地地址,比如
192.168.1.100 mydev.local,再用GET http://mydev.local/api - 长期建议:后端开发时启用 CORS 并允许
http://localhost:port,前端调试直接用浏览器或 curl,别强求 rest-client 走代理调本地服务
Thunder Client 报 “Proxy authentication required” 却没配账号?
这是典型的企业中间人代理(如 Zscaler、Netskope)在 TLS 握手阶段插入自签名证书,并要求客户端完成 NTLM 或 Kerberos 认证——而 Thunder Client 当前版本(v5.2+)不支持这类认证流程,只支持基础 HTTP Auth(user:pass@proxy)。
- 错误日志里会出现
ERR_SSL_CLIENT_AUTH_CERT_NEEDED或net::ERR_PROXY_AUTH_UNSUPPORTED - VSCode 全局设
"http.proxyStrictSSL": false对 Thunder Client **完全无效**,它有自己的证书校验逻辑 - 可行路径只有两条:① 在公司 IT 门户申请免代理白名单(放行你的 API 域名);② 改用 curl 命令 +
-x参数手动测试,绕过插件层 - 别试
NO_PROXY环境变量加域名——Thunder Client 不读这个,只认自己插件设置里的thunder-client.noProxy字符串(逗号分隔,不支持通配符)
多个 API 插件共存时,如何避免端口冲突或证书覆盖?
重点不是“哪个插件更轻量”,而是它们启动的本地代理监听端口是否重叠,以及是否都尝试注入根证书到系统信任库。
-
rest-client不起本地代理,不操作证书 -
Thunder Client默认不启代理,但开启thunder-client.enableLocalProxy后会监听127.0.0.1:5000;若你同时运行 Charles/Fiddler,端口冲突会导致EADDRINUSE -
HTTP Request插件从 v1.0 起默认启用本地 HTTPS 代理(127.0.0.1:5001),并自动安装自签名 CA 证书;和 Thunder Client 的证书管理冲突,可能导致 VSCode 内置网络栈后续所有请求 SSL 验证失败 - 检查方法:终端执行
lsof -i :5000(macOS/Linux)或netstat -ano | findstr :5000(Windows),看谁占着端口 - 解决建议:只留一个 API 插件主力使用;禁用其余插件的本地代理功能(如关掉
thunder-client.enableLocalProxy和http-client.enableLocalProxy);卸载插件后手动删掉对应证书(macOS 在钥匙串、Windows 在“管理计算机证书”中找 “HTTP Request Proxy CA” 类名称)
真正容易被忽略的是:API 测试插件的代理行为和 VSCode 主体网络栈是两套独立系统,改 http.proxy 或环境变量对它们多数无效;问题定位必须进插件自己的 settings.json 查字段名,而不是统一归因于“网络没配好”。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











