node.js - 在重定向之前设置 Express 响应 header

标签 node.js express routing http-headers

我正在实现一个站点登录,它接收电子邮件/密码组合,检索 API token ,并将其返回给用户以在 localStorage 中存储(加密)。

目前,成功发布到 /login ,应用程序将用户重定向到索引页面,并将 token 附加为查询,如下所示(建议 here):

login.post('/', function(req, res) {
    ...checking password...

    Auth.getToken(user, function(err, token) {
        res.redirect('/?token=' + token);
    });
});

这工作正常,但我更喜欢保持我的 URL 尽可能干净,并将 token 设置为 header :
login.post('/', function(req, res) {
    ...checking password...

    Auth.getToken(user, function(err, token) {
        res.set('x-access-token', token);
        console.log(res._headers);
            // --> {'x-powered-by': 'Express', 'x-access-token': <token>}
        res.redirect('/');
    });
});
console.log -ing res._headers显示标题已按预期设置,但是当我登录时 req.headers在对索引页面的请求中,它没有显示:
{ host: 'localhost:3000',
  connection: 'keep-alive',
 'cache-control': 'max-age=0',
 accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 'upgrade-insecure-requests': '1',
 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36',
 referer: 'http://localhost:3000/login',
 'accept-encoding': 'gzip, deflate, sdch',
 'accept-language': 'en-US,en;q=0.8',
 cookie: 'ifusr=crwj; _ga=GA1.1.1933420201.1409901705',
 'if-none-match': '"1195161647"' }

任何建议表示赞赏!

最佳答案

设置 header 在这里不起作用,因为重定向将执行新的 http 请求,您可以使用 express-session存储身份验证 token 并在需要时获取它

req.session.accessToken = token

关于node.js - 在重定向之前设置 Express 响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235438/

相关文章:

routing - 在 Component Angular 2 中限制未经授权的访问

node.js - Socket.io表达不同的路由

c# - 从 .NET 应用程序访问 TCP/IP 路由信息

javascript - Node-Webkit 窗口上下文

javascript - 我一直在尝试使用 Node js 访问 json 文件中的数据,但输出未定义

node.js - ChildProcess.fork 不使用 babel 参数

node.js - Bottender - 在 facebook 上启用 persist_menu 和 get_started 按钮

node.js - 为什么/public 文件夹用于 Node.js 中的静态内容

javascript - 提交表单并更新父页面后关闭 javascript 弹出窗口吗?

asp.net - 可以使用 URI 模板将 URI 与路由匹配吗?