Visual Studio Code 中的网络连接

Visual Studio Code 基于 Electron 构建,并受益于 Chromium 的所有网络协议栈功能。这也意味着 VS Code 用户可以享受 Google Chrome 提供的大部分网络支持。

常见主机名

VS Code 中的少数功能需要网络通信才能正常工作,如自动更新机制、查询和安装扩展以及遥测。为了让这些功能在代理环境中正常工作,你必须正确配置产品。

如果你在需要允许VS Code使用的特定域的防火墙后面,以下是你应该允许通信通过的主机名列表:

  • update.code.visualstudio.com- Visual Studio Code 下载与更新服务器
  • code.visualstudio.com- Visual Studio Code 文档
  • go.microsoft.com- Microsoft链路转发服务
  • marketplace.visualstudio.com- Visual Studio 市场
  • *.gallery.vsassets.io- Visual Studio 市场
  • *.gallerycdn.vsassets.io- Visual Studio 市场
  • rink.hockeyapp.net- 事故报告服务
  • bingsettingssearch.trafficmanager.net- 产品内设置搜索
  • vscode.search.windows.net- 产品内设置搜索
  • raw.githubusercontent.com- GitHub 仓库原始文件访问
  • vsmarketplacebadges.dev- Visual Studio Marketplace 徽章服务
  • *.vscode-cdn.net- Visual Studio Code CDN
  • vscode.download.prss.microsoft.com- Visual Studio Code 下载 CDN
  • download.visualstudio.microsoft.com- Visual Studio 下载服务器,提供部分 VS Code 扩展(C++、C#)的依赖
  • vscode-sync.trafficmanager.net- Visual Studio Code 设置同步服务
  • vscode-sync-insiders.trafficmanager.net- Visual Studio Code 设置同步服务(Insiders)
  • vscode.dev- 作为登录 GitHub 或 Microsoft 时的备选,用于扩展或设置同步(仅vscode.dev/redirect)
  • *.vscode-unpkg.net- 用于加载网页扩展
  • default.exp-tas.com- Visual Studio Code 实验服务,用于提供实验用户体验

代理服务器支持

VS Code 的代理服务器支持和 Google Chromium 完全一样。以下是 Chromium 文档中的一段摘录:

"The Chromium network stack uses the system network settings so that users and administrators can control the network settings of all applications easily. The network settings include:

 - proxy settings
 - SSL/TLS settings
 - certificate revocation check settings
 - certificate and private key stores"

这意味着你的代理设置应该会自动被识别。

否则,您可以使用以下命令行参数来控制代理设置:

# Disable proxy
--no-proxy-server

# Manual proxy address
--proxy-server=<scheme>=<uri>[:<port>][;...] | <uri>[:<port>] | "direct://"

# Manual PAC address
--proxy-pac-url=<pac-file-url>

# Disable proxy per host
--proxy-bypass-list=(<trailing_domain>|<ip-address>)[:<port>][;...]

想了解更多关于这些命令行参数的信息,请参见 Chromium 网络设置

认证代理

经过认证的代理应在 VS Code 中无缝工作,添加 PR #22369

支持的认证方法包括:

  • 基础
  • 摘要
  • NTLM
  • 谈判

在经过认证的HTTP代理后使用VS Code时,应会出现以下认证弹窗:

代理

请注意,SOCKS5代理认证支持尚未实现;你可以在Chromium的问题追踪器中关注这个问题。

有关VS Code中的HTTP代理认证的更多信息,请参见Chromium HTTP认证

SSL证书

HTTPS代理通常会重写输入请求的SSL证书。Chromium的设计初衷是拒绝由它不信任的证书签名的响应。如果你遇到任何SSL信任问题,有几个选项可供你参考:

  • 由于Chromium使用作系统的证书信任基础设施,首选方案是将代理的证书添加到作系统的信任链中。请参阅 Chromium 根证书策略文档以了解更多信息。
  • 如果你的代理服务器介入本地主持你也可以尝试 --allow-insecure-localhost 命令行标志。
  • 如果其他方法都失败,你可以用 --ignore-certificate-errors 命令行标志让 VS Code 忽略所有证书错误。警告:这很危险不建议这样做,因为这会带来安全隐患。

给Linux用户的提示:要在Linux上添加代理证书,你需要将其添加到系统信任存储和NSS信任存储。具体步骤因分布而异:

  • 对于Ubuntu/Debian:将证书复制到/usr/local/share/ca-certificates/然后跑Sudo Update-CA-Certificates
  • 对于RHEL/CentOS/Fedora:用途sudo trust anchor --store <certificate-file>或置于/etc/pki/ca-trust/source/anchors/然后跑sudo update-ca-trust
  • 此外,使用certutil -A -n “ProxyCA” -t “CT,,” -i <certificate-file> -d sql:$HOME/.pki/nssdb将其添加到NSS信托存储库。

遗留代理服务器支持

扩展目前还没有像VS Code那样支持代理。你可以在GitHub上关注本期的开发进展。

与扩展类似,其他一些VS Code功能尚未完全支持代理网络,主要是CLI接口。运行时的CLI接口就是你能得到的Code --install-extension vscodevim.vim从命令提示符或终端。你可以在GitHub上关注本期的开发进展。

由于这两个约束,以下

http.proxy
  • 在VS代码中打开
  • 在VS Code Insiders中开放
,
http.proxyStrictSSL
  • 在VS代码中打开
  • 在VS Code Insiders中开放
以及
http.proxy授权
  • 在VS代码中打开
  • 在VS Code Insiders中开放
变量依然是VS Code设置的一部分,但只在这两种情况下才会被尊重。

故障排除

这里有一些有用的链接,可能帮助你排查VS Code中的网络问题: