2016-09-13 8 views
0

プロキシを使用してPOSTリクエストを渡し、リクエストがパイプPOSTの呼び出しに失敗し、GETしませんが動作しているようです:ノードの要求急行ノード/を使って書かれたパイプ

var pipeToTrustedZone = function(req, res){ 
    getEnrichedHeaders(req,function(err, headers){ 
    req.headers = headers; 
    var url = proxiedServerPath + req.originalUrl; 
    console.log(req.method+" TOWARDS"); 
    log.info(url); 
    req.pipe(request({qs:req.query, uri: url })).pipe(res); 
    }); 
} 

上記のコードはうまくミドルウェアとして配置要求を取得する実行しますエクスプレスルータでは、POSTではproxiedServerはメッセージを受信しません。

上記の理由で動作しない理由はありますか?すべてのエンドポイントがプロキシされるわけではないのでまた

私のアプリは、ボディパーサーミドルウェアを使用している:

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

答えて

0

あなたはresに適切なヘッダーを設定request()に渡されたオブジェクトの両方のセット要求headersに持っています。つまり、単純に1ライナーにすることはできません。例:

req.pipe(request({ 
    qs: req.query, 
    uri: url, 
    headers: req.headers 
})).on('response', function(pres) { 
    res.writeHead(pres.statusCode, pres.headers); 
    pres.pipe(res); 
}); 
+0

bodyParserが干渉する可能性がありますか? –

+1

はい、それはそれに影響します。ルートやボディ解析のミドルウェアを移動して、プロキシルートで実行されないようにする方が簡単かもしれません。 – mscdex

関連する問題