NodeJs 中间件集标头
Posted
技术标签:
【中文标题】NodeJs 中间件集标头【英文标题】:NodeJs middleware set header 【发布时间】:2016-11-08 11:00:09 【问题描述】:我想在中间件的标题中添加一个刷新令牌,如该问题的第一个答案所示:implementing refresh-tokens with angular and express-jwt
后端 - 中间件:
jwt.verify(token, config.secret, function(err, decoded)
if (err)
res.status(401);
return res.json( success: false, message: 'Authentication failed' );
else
var token_exp = new Date(decoded.exp * 1000);
var date = new Date();
var difference = (token_exp.getTime() - date.getTime()) / 60000;
if(difference < (config.expireTimeToken / 2 ))
var expires = config.expireTimeToken + 'm';
var token = jwt.refreshToken(decoded);
res.setHeader('Authorization', 'Bearer ' + token);
next();
else
req.decoded = decoded;
next();
);
前端拦截器:
module.exports = function ($injector)
return
request: function (config)
var CoreService = $injector.get('CoreService');
config.headers['x-access-token'] = CoreService.getToken();
return config;
,
response: function(response)
var receivedToken = response.headers('authorization');
console.log(receivedToken);
return response;
;
;
但是,每当我设置标头时,客户端的拦截器都不会收到它。当我在我的 npm 控制台中调试 res.header 时,设置的标头“授权”位于“_headers”而不是“标头”中。
我该如何解决这个问题。
【问题讨论】:
【参考方案1】:在 express 中间件中,您可以使用 res.set(field, [value])
或 res.header(field, [value])
(相同功能的别名)设置标头。 setHeader 不是 express 方法,而是原生 node.js,我认为这可能会导致问题。
【讨论】:
我尝试了 set、header 和 setHeader 的各种组合,但都没有解决我的问题。以上是关于NodeJs 中间件集标头的主要内容,如果未能解决你的问题,请参考以下文章