概览
目标: 修复开发代理运行时应用丢失连接的问题
时间: 5 分钟
插件: 没有
先决条件:设置开发代理
某些应用程序在开发代理运行时会丢失网络连接,即使它们的 URL 不在您的列表urlsToWatch中也是如此。 本文介绍它发生的原因以及如何修复它。
症状
- 开发代理启动时,Outlook、WhatsApp 或其他桌面应用等应用程序停止工作
- 即使未监视其 URL,应用也会显示连接错误
- 停止开发代理服务器时,网络连接会立即恢复
原因
当开发代理自行注册为系统代理(默认行为)时,计算机上的所有 HTTP/HTTPS 流量都会流经它。 某些应用程序使用 证书固定,这意味着它们只接受由特定证书签名的连接。 由于开发代理使用自己的证书来截获流量,因此这些应用会拒绝连接并失去网络访问权限。
此问题在 Windows 上最为常见,应用程序会自动使用系统代理设置。
Solutions
选择最适合工作流的解决方案:
选项 1:排除 Windows 代理设置中的 URL
在 Windows 代理设置中添加有问题的域的例外。 流向这些域的流量完全绕过了开发代理。
打开 设置>网络和 Internet>代理
在 “手动代理设置”下,查找 “使用代理服务器”(以以下条目开头的地址除外)
添加遇到问题的域,用分号分隔。 例如:
*.outlook.com;*.office.com;*.whatsapp.com;*.whatsapp.net选择“保存”
流向这些域的流量现在会绕过开发代理,而其他流量仍会流经其中。
选项 2:禁用系统代理模式
如果不需要开发代理来截获来自所有应用程序的流量,请禁用系统代理,并仅配置目标应用程序以使用代理。
使用命令行
在不注册为系统代理的情况下启动开发代理:
devproxy --as-system-proxy false
使用配置文件
将此设置添加到 devproxyrc.json 中。
{
"asSystemProxy": false
}
然后,通过设置 https_proxy 环境变量将应用程序配置为使用开发代理:
set https_proxy=http://127.0.0.1:8000
export https_proxy=http://127.0.0.1:8000
export https_proxy=http://127.0.0.1:8000
通过此设置,只有遵循 https_proxy 环境变量的应用程序通过开发代理发送流量。 其他应用程序直接连接到 Internet。
选项 3:仅监视特定进程
使用watchProcessNames或watchPids设置以仅截获来自特定应用程序的流量。 此方法仍将开发代理注册为系统代理,但会限制哪些进程截获了流量。
{
"watchProcessNames": ["node", "dotnet"]
}