我昨天下午开始玩nodejs。今天早上我开始写一个代理服务器,收到请求后有以下要求:
- 执行身份验证检查(通过 request())
- 如果 auth check 评估为 true,则执行实际请求(代理)
- 否则,重定向
一切正常,除了实际的代理请求(分配给代理 var)。它要么没有被调用,或者至少没有被返回到请求中。或者别的什么,我觉得这可能与 nodejs 的异步行为有关。
附加说明:“赢!” 在控制台上输出。
欢迎任何想法。
var server = httpProxy.createServer(function(request, response, proxy) {
var requestHostname = request.headers['x-forwarded-host'];
var configFile = './config/'+requestHostname+'.js';
if(path.existsSync(configFile))
{
var config = require(configFile);
var authProxy = requester({
url: config.proxyRequest.url+config.proxyRequest.defaultPath,
port: 443,
method: request.method
}, function(error, proxyResp, body) {
if(config.methods.authCheck(body))
{
console.log('Win!');
proxy = requester({
url: 'http://www.google.com',
port: 443,
method: request.method
});
// Pipe request and response back
request.pipe(proxy);
proxy.pipe(response);
}
else
{
response.writeHead(300, 'Forbidden', {
'Location': globalConf.portalUrl
});
response.end();
}
});
}
else
{
response.writeHeader(400);
response.write('404: The requested URL '+requestHostname+' does not exist.');
response.end();
}
response.addListener('end', function() {
console.log('Ending it');
})
});