使用node / express和request编写的代理无法管道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请求,作为快速路由器中的中间件,但是在POST上,proxiedServer永远不会收到消息。
知道为什么以上不起作用?
此外,我的应用程序正在使用正文解析器中间件,因为并非所有端点都要代理:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
答案 0 :(得分:0)
您必须在传递给headers
的对象中设置请求request()
,并且在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);
});