2014-02-11 3 views
0

들어오는 요청을 couchDb 서버로 보내주는 nodejs 프로그램이 있습니다. nodejs 프록시 요청에서 응답 객체를 얻는 방법

res 객체는 항상 정의되지 않은 코드

/*! 
* 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; 
    } 
} 

입니다. 응답이 404 인 경우 사례를 처리해야합니다. http-proxy 모듈을 사용하여 어떻게 할 것인가

+0

코드'var에 입술에 var res = proxy.proxyRequest(req, res);에서 코드를 변경 = proxy.proxyRequest (REQ, 고해상도)'나에게 유선, 내가해야 여기에 생각하는 것 같다'proxy.proxyRequest (REQ, 기능 (고해상도) {})'. 그리고 [node http proxy] (https://github.com/nodejitsu/node-http-proxy/tree/caronte)를 보았을 때 여기에서 사용한 사용법을 읽지 마십시오. 확인 해주세요. –

+0

그래, 나는 그것을 거기에서 보지 않는다. .. 이것은 레거시 코드이고 그것을 바꿀 필요가있다. 이 유선 코드는 여전히 작동합니다. –

+0

Fine. 나는'var res = proxy.proxyRequest (req, res);를'proxy.proxyRequest (req, res);'로 변경하면 효과가있을 것이라고 생각한다. –

답변

1

나는 proxy.proxyRequest(req, res);이 어떤 값도 반환하지 않으며 'res'매개 변수를 직접 변경한다고 생각합니다.
그래서 단지 proxy.proxyRequest(req, res);

관련 문제