用于npm请求包的拦截器

时间:2018-03-24 04:55:31

标签: node.js ajax express request

我正在开发Express JS网络应用程序。我的应用程序中有3层。外部API服务器,Express和Angular作为前端。所以来自前端的每个AJAX请求都应该通过express来以同样的方式到达API服务器,也是响应。身份验证由API服务器管理。当我从Angular发送登录请求时,它将首先到达Express,然后Express会向API服务器发送请求,API服务器会将身份验证令牌发送给Express,Express会将其传递给前端。因此Angular的所有请求都会将Authentication令牌作为标头发送给Express,express将发送带有访问令牌的相应请求。我的应用程序如何工作。我知道有点复杂。现在我从前端请求中检索访问令牌,并将其传递给所有控制器中的API服务器。我想要做的是,我必须编写一个拦截器,它将从前端请求全局检索访问令牌并传递给API服务器。

1 个答案:

答案 0 :(得分:0)

您可以在主文件中添加application middleware,即路线上方(app.js/server.js)

function interceptor(req, res, next) {
  let headers = req.headers;
  headers.someHeader = 'xyz'; // add your headers like this 
  request('your server url here', {
    method: req.method,
    headers: headers,
  }, (err, response, body) => {
    if (err) {
      next(err);
    }
    else {
      console.log(response.request.headers);
      res.send('OK');
    }
  });
}
app.use(interceptor);