一尘不染

在管道之前编辑响应头

node.js

对于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


阅读 232

收藏
2020-07-07

共1个答案

一尘不染

使用该request模块,当前没有办法(AFAIK)进行回调并且不缓冲服务器响应。所以这是您可以如何使用内置的方法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);
});
2020-07-07