[英]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()
的對象中設置請求headers
,並在res
上設置適當的標頭。 這意味着您將無法簡單地使其成為單線。 例如:
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.