0

着信リクエストを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モジュールを使用してそれを行う方法

4

1 に答える 1

1

proxy.proxyRequest(req, res);値を返さず、パラメータ「res」を直接変更すると思います。
コードを からvar res = proxy.proxyRequest(req, res);に変更するだけですproxy.proxyRequest(req, res);

于 2014-02-12T04:41:15.527 に答える