我有以下设置:客户端 => 代理服务器 => 源服务器
我分别为这些部分使用了以下 Node.js 库:isomorphic-fetch => http-proxy => http
这是两个文件中的设置要点,一个用于每个服务器,一个用于客户端:https : //gist.github.com/headquarters/850cbb199ff397c6da56fb8d86113a7e要在本地运行它,请node server.js
在一个 shell 和node fetch.js
另一个 shell 中运行。
随着服务器的运行,如果我http://localhost:8818
在浏览器中访问,我会得到示例响应{"a":"b"}
,这样就可以了。如果我转到http://localhost:9818
,我也会得到该响应,因此代理似乎工作正常。但是,如果我运行DEBUG=* node fetch.js
包含 HTTP 代理的 ,请求将失败(请参阅https://gist.github.com/headquarters/850cbb199ff397c6da56fb8d86113a7e#file-failure-txt 的输出)。
如果没有该agent
属性,fetch 命令在命令行上可以正常工作。我该如何调试这个套接字挂断错误?
结果我没有仔细阅读https-proxy-agent文档。这一行有点令人困惑:An HTTP(s) proxy http.Agent implementation for HTTPS
--PROXY 本身可以是 HTTP 或 HTTPS,但对于这种代理代理,源服务器必须是 HTTPS。对于 HTTP 源服务器,我必须使用http-proxy-agent。因此,套接字挂断可能来自尝试访问 HTTP 端点的 https.Agent。当我切换到 http-proxy-agent 时它起作用了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句