我一直在使用node.js来设置代理服务器,该服务器将处理传入的客户端请求,并将验证他们是否具有连接到服务器的正确证书。
我想要做的是能够将客户端的证书添加到其标题中以创建用户名,我将传递给服务器。
function (req, res) {
//Here is the client certificate in a variable
var clientCertificate = req.socket.getPeerCertificate();
// Proxy a web request
return this.handle_proxy('web', req, res);
};
我希望能够做到的是:req.setHeader('foo','foo')
我知道proxy.on('proxyReq)
存在,但代码的设置方式,我需要能够使用req
参数。
有办法做到这一点吗?
如果我需要澄清我的问题,请告诉我。
答案 0 :(得分:1)
您可以使用原始请求中提供的标头以及使用http.request您想要的任何额外标头来制作您自己的http请求。只需收到原始请求,将标头复制到新的请求标头中,添加新标头并发送新请求。
var data = [];
var options = {
hostname: 'www.google.com',
port: 80,
path: '/upload',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postData.length
}
};
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
data.push(chunk);
});
res.on('end', function() {
console.log(data.join(""));
//send the response to your original request
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// Set headers here i.e. req.setHeader('Content-Type', originalReq.getHeader('Content-Type'));
// write data to request body
req.write(/*original request data goes here*/);
req.end();