如何在express js中执行res.redirect时传递标头

我正在使用express js,我需要重定向到需要验证的页面。 这是我的代码:

router.get('/ren', function(req, res) {
    var username = 'nik',
        password = 'abc123',
        auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');

    res.redirect('http://localhost:3000/api/oauth2/authorize');
})

我该如何设置标题到这个重定向命令?


如果您使用301(永久移动)或302(找到)重定向​​,不自动表示标题?

如果没有,这是你如何设置标题:

res.set({
  'Authorization': auth
})

要么

res.header('Authorization', auth)

然后打电话给

res.redirect('http://localhost:3000/api/oauth2/authorize');

最后,类似的东西应该可以工作:

router.get('/ren', function(req, res) {
    var username = 'nik',
        password = 'abc123',
    auth = "Basic " + new Buffer(username + ":" + password).toString("base64");

    res.header('Authorization', auth);

    res.redirect('http://localhost:3000/api/oauth2/authorize');
});

由于人们询问是否有任何有关在重定向后未正确设置标题的解决方法,实际上有两种方法可以使用:

首先,通过在重定向url中使用查询参数,您可以将其提取到客户端。 您甚至可以使用历史API从网址加载时将其删除,如此处所示。

history.pushState(null, '', location.href.split('?')[0])

另一个解决方案是在重定向之前设置一个cookie,然后在客户端获取它。 就我个人而言,我更喜欢在某种意义上它不会以任何方式污染我的网址,我只需要使用简单的帮助程序加载该Cookie即可:

export const removeCookie = name => {
  document.cookie = `${name}=; Max-Age=0`
}
链接地址: http://www.djcxy.com/p/36689.html

上一篇: How to pass headers while doing res.redirect in express js

下一篇: sql' Replacement in Rails 4.2