我有以下代码:
app.post('/someurl',function(req,res,next){
var request = require('request').post('/otherurl');
var response = '';
request.on('data',function(chunk){
response += chunk;
});
var pipe = req.pipe(parser).pipe(request);
request.on('end',function(){
var res2 = pipe.response;
var obj = JSON.parse(response);
res.json(obj);
});
});
所以它只是将 POST 请求传送到其他 url。我需要的是知道管道请求的正文。所以我添加了这个(这段代码应该什么都不做):
var Transform = require('stream').Transform;
var parser = new Transform();
parser._transform = function(data, encoding, done) {
this.push(data);
done();
};
并更改req.pipe(request)
为req.pipe(parser).pipe(request)
. 问题是这不起作用 - req 没有通过管道传输到 req,而只是传输到解析器......
问题出在授权上 - 实际上 req.pipe(parser).pipe(request) 有效,但它返回 401 Authorization 错误。问题是我如何将 Authorization 标头传递给管道请求?