0
У меня есть программа nodejs, которая направляет входящий запрос на сервер couchDb.Как получить объект ответа в запросе прокси узла nodejs
Это код
/*!
* Middleware for forwarding a request to CouchDB.
*/
/**
* Module dependencies.
*/
var httpProxy = require('http-proxy'),
util = require('./util');
// Set max sockets opened by proxy
var maxSocks = process.env.MAX_SOCKETS || 2048;
// Set timeout (ms) for proxy requests. Ideally this should be less than 30000ms which is Heroku timeout
var timeout = process.env.TIMEOUT || 25000;
httpProxy.setMaxSockets(maxSocks);
httpProxy.timeout = timeout;
module.exports = function(couch) {
var proxy = new httpProxy.HttpProxy(couch),
couchTarget = couch.target;
return function(req, res, next) {
console.log('Received request: ' + req.url);
req.headers['host'] = couchTarget.host + ':' + couchTarget.port;
req.headers['authorization'] = couch.credentials;
req.headers['x-forwarded-ssl'] = util.isSecureForwardedRequest(req);
var forwardedFor = req.headers['x-forwarded-for'];
req.headers['x-real-ip'] = forwardedFor
? forwardedFor.split(',',1)[0]
: req.connection.remoteAddress;
req.url = couch.path + req.url;
console.log('Proxying to: ' + req.url);
var startTime = new Date().getTime();
var res = proxy.proxyRequest(req, res);
console.log(" Response is " + res + req);
return res;
}
}
Объект res
всегда не определено. Мне нужно обработать случай, если ответ 404
. Как это сделать, используя модуль http-proxy
Код 'вар Рез = proxy.proxyRequest (REQ, разрешение);' кажется проводной ко мне, я думаю, что здесь должен быть 'proxy.proxyRequest (REQ, функция (разрешение) {}) '. И я смотрю [узел http proxy] (https://github.com/nodejitsu/node-http-proxy/tree/caronte), не читайте использование, которое вы использовали здесь. Пожалуйста, подтвердите. –
Да, я не вижу его там ... Это устаревший код, и мне нужно его изменить. Этот проводной код работает еще –
Отлично. Я думаю, что изменить 'var res = proxy.proxyRequest (req, res);' в 'proxy.proxyRequest (req, res);' может работать. –