簡體   English   中英

節點的請求沒有使用管道傳遞 POST 請求

[英]Node's request does not pass POST requests using pipe

使用 node/express 編寫的代理和請求無法通過管道 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);
    });
}

上面的代碼執行 get 請求,作為中間件放置在 express 路由器中,但是在 POST 上,proxyedServer 永遠不會收到消息。

知道為什么上述方法不起作用嗎?

此外,我的應用程序正在使用正文解析器中間件,因為並非所有端點都將被代理:

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

您必須在傳遞給request()的對象中設置請求headersres上設置適當的標頭。 這意味着您將無法簡單地使其成為單線。 例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM