存在代理时Node.js套接字挂起

时间:2018-12-17 13:28:42

标签: node.js

我有以下设置: 客户端=>代理服务器=>原始服务器

我分别为这些片段使用以下Node.js库: isomorphic-fetch => http-proxy => http

以下是两个文件的设置要点,每个服务器一个,客户端一个:https://gist.github.com/headquarters/850cbb199ff397c6da56fb8d86113a7e 要在本地运行此命令,请在一个shell中运行node server.js,在另一个shell中运行node fetch.js

在服务器运行的情况下,如果我在浏览器中转到http://localhost:8818,则会收到示例响应{"a":"b"},因此可以正常工作。如果我转到http://localhost:9818,我也会得到该响应,因此代理似乎工作正常。但是,如果运行包含HTTP代理的DEBUG=* node fetch.js,则请求失败(请参见https://gist.github.com/headquarters/850cbb199ff397c6da56fb8d86113a7e#file-failure-txt的输出)。

如果没有agent属性,则fetch命令在命令行上可以正常工作。如何调试此套接字挂起错误?

1 个答案:

答案 0 :(得分:0)

结果是我没有足够仔细地阅读https-proxy-agent文档。这一行有点令人困惑:An HTTP(s) proxy http.Agent implementation for HTTPS - PROXY本身可以是HTTP或HTTPS,但是对于这种代理代理而言,原始服务器必须是HTTPS。对于HTTP源服务器,我必须使用http-proxy-agent。因此,套接字挂起可能来自https.Agent尝试访问HTTP端点。当我切换到http-proxy-agent时,它起作用了。