1

我正在积极尝试获取有关httpOnlycookie 的知识,并发现了很多关于它的文章,我们为什么要使用它。

但我还没有看到任何关于如何使用它的实际例子。通过几次试验和错误,我知道我们不能httpOnly在浏览器中设置标志,需要在服务器上完成。所以我cookie-parser相应地使用了库:

const express = require('express');
var cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());

app.post('/generateToken', (req, res) => {
    res.cookie('AccessToken', JWT_AUTH_TOKEN, {
        expires: new Date(new Date().getTime() + 30 * 1000),
        sameSite: 'strict',
        httpOnly: true,
        
    })
    res.cookie('RefreshToken', JWT_REFRESH_TOKEN, {
        expires: new Date(new Date().getTime() + 31557600000),
        sameSite: 'strict',
        httpOnly: true,
    }).send("hello")
    
});

app.listen(process.env.PORT || 5050);

通过这个,我成功地获得了存储在我的浏览器中的 cookie 以及所有的属性,比如sameSiteHttpOnly除非secure:true我在本地主机上。但问题是我们无法使用httpOnlyjavascript 访问这些令牌,如何将其发送到具有正确标头的特定路由,如下所示

let token = req.headers['authorization'];

并发送 httpOnly cookierefreshToken让我们说/refreshRoute 以使用 Axios 获取新accessTokens信息,或者这样做的方式是什么?

4

1 回答 1

1

当您使用 HttpOnly 标志设置 cookie 时,cookie 将通过 HTTP 请求从浏览器自动发送到服务器。您不必在 HTTP 标头中显式设置它。

cors服务器上安装后,您可以使用req.cookies.

我不确定 axios,但如果使用 fetch API,我们需要credential:'include'在 fetch API 中添加选项,以便可以设置 HttpOnly cookie。

看看这个帖子

于 2020-11-09T01:20:46.433 回答