【问题标题】:Cookie is not set in browser (Node.js + Express.js)浏览器中未设置 Cookie(Node.js + Express.js)
【发布时间】:2021-04-23 08:25:31
【问题描述】:

我有一个 Web 服务器,它在 res 对象上设置了一个 httpOnly cookie,但它没有保存在浏览器中。

const refreshToken = 'my-token'
res.cookie('refreshToken', refreshToken, { httpOnly: true, secure: true, sameSite: 'none' })

此服务器在https://192.168.1.179:3001上提供服务
客户端应用程序 (Angular 11) 在 https://192.168.1.179:4200

上提供服务

我为服务器和客户端生成了自签名 ssl 证书(并将它们安装为Trusted root authorities),不知道这是否重要。

有趣的是浏览器收到了这个cookie:

编辑:如果这很重要,我也 app.use(cors())

【问题讨论】:

    标签: javascript node.js http cookies https


    【解决方案1】:

    浏览器中的客户端应用程序无法访问httpOnly cookie。将 httpOnly 更改为 false。

    【讨论】:

    • 我不需要在 javascript 中访问它。我只需要将它存储在浏览器中并在每个请求时发送。我发的图片显示收到了cookie,但是当我打开devtools -> application -> cookies时,cookie不存在
    • 我明白了。当您使用 Angular 发出的请求将 cookie 发送回服务器时,您使用 Axios 吗?通常,您设置withCredentials: true 并在服务器中使用这样的cors:app.use(cors({credentials: true}))
    • 是的,我有这些选项。我注意到当我从我的服务器(来自同一个域)提供我的应用程序时,cookie 被保存。我想这只是对通过不安全连接发送的第三方 cookie 的限制
    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2019-06-08
    • 2021-09-30
    • 2019-07-25
    • 2023-03-16
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多