0

node.js を使用して Web アプリケーションを構築しており、特定のルートを別の Node.js (高速) サーバーにプロキシする必要があります。

私は以下のコードを持っています

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);

私の問題は、リクエストが適切にルーティングされることですが、追加したデータ コンテキスト (カスタム ヘッダー) がターゲット サーバーのリクエストから削除されます。

誰かがプロキシされているサーバーに詳細情報を渡す方法をアドバイスしてもらえますか

4

1 に答える 1

0

robertklep が述べたように、コードは機能していましたが、間違った場所を見ていました。

ただし、覚えておくべきことの 1 つは、追加できるのは文字列のみであるということです。追加したオブジェクトはすべてなくなりましたが、JSON.stringify(obj) を実行し、ヘッダーに追加して通過させる必要がありました。

文字列化できないオブジェクト (ソケット ハンドルなど) を渡すことができませんでした。

于 2013-05-10T16:19:16.557 に答える