2013-05-05 64 views
0

我如何使用Node.js建立一个web应用程序,我需要代理某些路由传送给另一Node.js的(表达)服务器Node.js的HTTP代理如何将信息传递给目标服务器

我有以下代码

var express = require('express'), 
    http=require('http'), 
    httpProxy = require('http-proxy'), 
    proxy = new httpProxy.RoutingProxy(); 


var server = express(); 
server.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
server.use(express.logger()); 
server.use(express.cookieParser()); 
server.use(express.query()); 
server.use(express.session({secret:"secret-key", maxAge:10*60*1000})); 
server.use(routeRequest); 

var routeRequest = function (req, res, next) { 
req.url=req.url.substring(1); 
if (req.url.indexOf("client")==0) { 
    proxyToClientServer(9001,req,res)  
}else{ 
    res.writeHead(404, { 'Content-Type': 'text/plain' }); 
    res.end(); 
    } 


} 

var proxyToClientServer=function(port, req, res){ 

req.headers["data_context"]='customer_details'; 

proxy.proxyRequest(req, res, { 
    host: 'localhost', 
    port: port, 
    headers:req.headers 
    }) 
} 
server.listen(8000); 

我的问题是请求被正确地路由,但是我添加的数据范围内(自定义标题)从在目标服务器的请求删除

有人可以请指教如何传递更多信息正在代理服务器

+0

你的代码看起来很好(我做了一个小测试,头部正确传递)。尝试添加一些调试代码:'proxy.on('start',function(r){console.log('proxy start',r.headers)});'(这将打印带有代理请求的头文件) 。 – robertklep 2013-05-05 06:51:40

回答

0

正如robertklep所说,代码正在工作,我看着错误的地方。

但有一点要记住的是,我们只能添加字符串。我添加的任何对象都消失了,但我不得不将JSON.stringify(obj)添加到头部以使其通过。

无法字符串化的对象(如套接字句柄)无法传递。

相关问题