我需要能够将React应用程序的jwt auth令牌(存储在本地存储中,通过'授权'标题发送)复制到我的浏览器的cookie存储中,但我不确定最佳方式这个。我需要这样做才能执行经过身份验证的非ajax调用来下载数据文件。
在一台服务器上运行的React前端调用另一台服务器上运行的API。
我已修改API服务器以通过标头和Cookie接受身份验证:
function fromHeaderOrCookie(req) {
if(req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if(req.cookies && req.cookies.srrsua) {
return req.cookies.srrsua;
}
return null;
}
const jwtOptions = {
jwtFromRequest: ExtractJwt.fromExtractors([fromHeaderOrCookie]),
secretOrKey: config.secret
};
在对服务器的请求中,我向XHR响应添加了一个cookie:
function tokenForUser(user) {
const timestamp = new Date().getTime();
return jwt.encode({sub: user.id, iat: timestamp}, config.secret);
}
res.cookie('jwtauth', tokenForUser(user), { expires: new Date(Date.now() + config.cookieMaxAge), httpOnly: false });
当cookie被发送回React服务器时(我看到它是标题),我看不到它实际上是在浏览器中设置的?
有人可以建议我应该做些什么来让浏览器实际应用cookie吗?此外,是否有其他推荐的方法使令牌可用于非xhr身份验证的请求?