Visual Studio 代码无法正确处理通过代理的 HTTPS 连接

Visual Studio 代码无法正确处理通过代理的 HTTPS 连接

看来我遇到了配置错误的问题。冰山一角是 VS Code v1.62.3 控制台中的以下错误:

> Executing task: C:\Users\Test\.platformio\penv\Scripts\platformio.exe update <

Updating platformio/contrib-piohome   3.4.0 @ ~3.4.0  Error: HTTPSConnectionPool(host='api.registry.ns1.platformio.org', port=443): Max retries exceeded with url: /v3/packages/platformio/tool/contrib-piohome (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1123)')))
The terminal process "C:\Users\Test\.platformio\penv\Scripts\platformio.exe 'update'" terminated with exit code: 1.

我已经配置了系统范围的代理(Windows 设置 → 网络和 Internet → 代理),但没有http_proxy设置https_proxy环境变量。

VS Code 具有以下设置:

{
  "http.proxyStrictSSL": false,
  "http.proxy": ""
}

第一个问题是,使用此设置,VS Code 仍会尝试连接代理。第二个问题是它以错误的方式与代理通信:

02:12:58.936212 IP laptop.62953 > proxy.3128: Flags [P.], seq 1:518, ack 1, win 256, length 517
        0x0020:                      1603 0102 0001 0001  ................
        0x0030:  fc03 03e9 84e1 cff8 6b1e 15d6 9ea6 9ee6  ........k.......
        0x0040:  1f66 f9ca 620a cf4d e968 e33d c71e ae3a  .f..b..M.h.=...:
        0x0050:  4919 8f20 64b6 a0ae 2a0d e44b 88e4 d1bf  I...d...*..K....
        0x0060:  4353 ae17 cf88 612a 5a85 d50e 3468 828a  CS....a*Z...4h..
...
02:12:58.936268 IP proxy.3128 > laptop.62953: Flags [.], ack 518, win 501, length 0
02:12:58.936607 IP proxy.3128 > laptop.62953: Flags [.], seq 1:1461, ack 518, win 501, length 1460
        0x0020:                      4854 5450 2f31 2e31  ........HTTP/1.1
        0x0030:  2034 3030 2042 6164 2052 6571 7565 7374  .400.Bad.Request
        0x0040:  0d0a 5365 7276 6572 3a20 7371 7569 640d  ..Server:.squid.
        0x0050:  0a4d 696d 652d 5665 7273 696f 6e3a 2031  .Mime-Version:.1
        0x0060:  2e30 0d0a 4461 7465 3a20 4d6f 6e2c 2032  .0..Date:.Mon,.2
        0x0070:  3920 4e6f 7620 3230 3231 2030 313a 3132  9.Nov.2021.01:12
        0x0080:  3a35 3820 474d 540d 0a43 6f6e 7465 6e74  :58.GMT..Content
        0x0090:  2d54 7970 653a 2074 6578 742f 6874 6d6c  -Type:.text/html
        0x00a0:  3b63 6861 7273 6574 3d75 7466 2d38 0d0a  ;charset=utf-8..
        0x00b0:  436f 6e74 656e 742d 4c65 6e67 7468 3a20  Content-Length:.
        0x00c0:  3333 3236 0d0a 582d 5371 7569 642d 4572  3326..X-Squid-Er
        0x00d0:  726f 723a 2045 5252 5f50 524f 544f 434f  ror:.ERR_PROTOCO
        0x00e0:  4c5f 554e 4b4e 4f57 4e20 300d 0a56 6172  L_UNKNOWN.0..Var
...

可以看到,客户端没有CONNECT api.registry.ns1.platformio.org:443向代理发送数据,而是向代理发送 SSL 数据。代理回复:

NONE/400 3689 NONE error:invalid-request - HIER_NONE/- text/html

另外,我还尝试了以下配置,但效果不佳:

{
  "http.proxyStrictSSL": false,
  "http.proxy": "",
  "https.proxy": "",
  "http.proxySupport": no
}

我还尝试使用--no-proxy-server参数启动 VS Code,但同样没有效果:VS Code 仍然通过代理运行。

相关文章

相关内容