vscode插件市场不读http.proxy配置,因其核心请求走electron底层网络栈,仅认extensions.gallery.serviceurl镜像源或系统环境变量;必须同步配置serviceurl与cacheurl(如https://vscode.cdn.azure.cn/extensiongallery/extensiongallery/),并彻底退出所有进程后重启才生效。

VSCode插件市场根本不用http.proxy,填了也白填——它走的是 Electron 独立网络栈,不读这个配置项,也不继承系统代理或环境变量。
为什么http.proxy对插件市场完全无效
很多人反复填http.proxy、重启、清缓存,结果 Marketplace 还是转圈或报Unable to connect to the extension gallery,就是因为搞错了作用域:http.proxy只影响语言包下载、自动更新检查、GitHub 登录等次要请求,而插件搜索、安装、publisher 列表加载这些核心操作,压根不走这条路。
验证很简单:打开Developer: Toggle Developer Tools → Network 标签页,搜索gallery相关的请求,你会发现它们的发起者是vscode-file://或electron://协议,不是 HTTP 客户端,所以http.proxy配置再准也没用。
- 插件市场请求由 VSCode 内置的 Gallery Client 发起,底层用的是 Chromium 的网络模块,绕过所有用户级代理设置
- 填错
http.proxy(比如漏http://前缀、写localhost)会导致其他功能(如 Copilot 登录)静默失败,但不会影响 Marketplace 页面本身 - 就算你开了 Clash 并全局代理,只要没在 VSCode 启动时继承环境变量,Marketplace 仍走直连
真正有效的两种方案:镜像源 or 环境变量启动
必须二选一,且不能混用。镜像源适合稳定访问,环境变量适合临时调试或企业中间人代理场景。
用镜像源(推荐):
- 必须同时配齐
extensions.gallery.serviceUrl和extensions.gallery.cacheUrl,缺一不可 - 值必须带完整协议+路径+末尾
/,例如:"https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/" -
cacheUrl建议与serviceUrl一致,或明确补上/publishers,大小写敏感,extensionGallery不能写成extensiongallery - 改完后必须彻底退出 VSCode:Windows 杀光
Code.exe和Code Helper.exe;macOS 用活动监视器强退所有Code进程;Linux 执行pkill -f "code"
用环境变量(需终端启动):
- 只在终端里设
HTTP_PROXY和HTTPS_PROXY(全大写),VSCODE_PROXY_SUPPORT是假变量,别填 - Linux/macOS 加到
~/.profile或~/.zprofile(不是.zshrc),然后用code --new-window启动 - Windows 在「系统属性 → 高级 → 环境变量」里设系统变量,再重启资源管理器
- 代理地址必须带协议头:
http://127.0.0.1:7890✅,127.0.0.1:7890❌(否则超时)
Remote-SSH 场景下代理配置位置容易错
本地 VSCode 的http.proxy或镜像源设置,完全不会透传给远程服务器上的vscode-server。Remote 插件装不上,90% 是因为只在本地配了,远程机器上还是裸连。
- 远程代理必须单独配:编辑远程机器上的
~/.vscode-server/data/Machine/settings.json - Remote 场景下,
extensions.gallery.*配置也得写在这份文件里,不是本地settings.json - 改完要重启 SSH 连接(断开再重连),不是“重新加载窗口”
- 别在远程
~/.bashrc里export HTTP_PROXY:vscode-server 启动的是 non-interactive shell,不 source 这些文件
http.proxyStrictSSL只解决证书错误,不解决连不上
如果你看到DEPTH_ZERO_SELF_SIGNED_CERT或空白页,说明代理用了自签名证书(如 Charles、旧版 Fiddler、Zscaler),VSCode 默认拒绝连接。这时加"http.proxyStrictSSL": false能绕过校验,但它只对http.proxy生效,对 Marketplace 完全无关。
- 这个配置仅影响 VSCode 自身发起的 HTTPS 请求(比如登录 GitHub、下载语言包)
- Marketplace 请求失败时,控制台报错是
net::ERR_CONNECTION_TIMED_OUT或ERR_NAME_NOT_RESOLVED,不是证书类错误 - 开了
http.proxyStrictSSL却还连不上 Marketplace?说明你根本没配对地方,别浪费时间调这个
最容易被忽略的是:镜像源和代理不是互斥选项,但优先级有严格顺序——网络不通时换源没用,网络通了但源响应慢或被污染,光配代理也不解决问题。先确保curl -I https://vscode.cdn.azure.cn能通,再调 Marketplace 配置。











