我正在尝试构建一个转发代理服务器,它可以接受对 http url 的请求,并将该请求传输到监听命名管道的 https 服务器。
我知道我错过了一个步骤,但我不确定它是什么。这就是我正在尝试使用的...
function pipeToServer(browserRequest, browserSocket, browserRequestHead){
var targetUrl = url.parse('https://' + browserRequest.url);
var namedPipe = getNamedPipe()
console.log("Attempting to connect to " + namedPipe)
var proxySocket = net.connect(namedPipe, function() {
console.log("Connected to destination server: " + namedPipe)
console.log("Sending head: " + browserRequestHead)
browserSocket.write('HTTP/' + browserRequest.httpVersion + ' 200 Connection Established\r\n' +'Proxy-agent: Node-Proxy\r\n' + '\r\n');
proxySocket.write(browserRequestHead);
proxySocket.pipe(browserSocket);
browserSocket.pipe(proxySocket);
});
}
连接成功,但目标服务器的请求处理程序(监听命名管道)从未被触发。有趣的是 browserRequestHead 似乎也总是空白。
我迷路了。任何帮助表示赞赏。
最佳答案
原来问题中发布的代码结果工作正常。该问题与所使用的 ssl 证书有关。由于 TLS 握手失败,请求未到达目标服务器。
关于node.js - 通过套接字连接将 https 代理请求传送到命名管道 (node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805724/