对于Express中的某些请求,我有一个小型代理。使用请求库,我有相当简洁的代码:
app.use('/api', function(req, res) { var url = rewriteUrl(req.url); var newReq = request(url, function(error) { if (error) { logError(error); } }); req.pipe(newReq).pipe(res); });
我的问题是来自API服务器的响应包含一堆我想要删除的不需要的标头。如何newReq在将其传递到之前从响应中删除标头res?
newReq
res
使用该request模块,当前没有办法(AFAIK)进行回调并且不缓冲服务器响应。所以这是您可以如何使用内置的方法http.request:
request
http.request
app.use('/api', function(req, res) { var url = rewriteUrl(req.url); var newReq = http.request(url, function(newRes) { var headers = newRes.headers; // modify `headers` here ... res.writeHead(newRes.statusCode, headers); newRes.pipe(res); }).on('error', function(err) { res.statusCode = 500; res.end(); }); req.pipe(newReq); });