【问题标题】:Vue-cookies with Firebase and Heroku, not being sent带有 Firebase 和 Heroku 的 Vue-cookies,未发送
【发布时间】:2021-03-13 15:25:58
【问题描述】:

我在 firebase 上部署了一个 Vue.js 项目,在 Heroku 上部署了一个 node-express 应用程序。现在我想使用 Axios 将 cookie 与每个请求一起发送到服务器。我正在使用 Axios,并且正在使用 vue-cookies 设置 cookie(它们属于 sameSite: nonesecure: true 属性)。

在 localhost 中,我可以在后端的每个请求中看到 cookie,并且可以使用 req.cookies.session 访问它们。 (会话是我保存在客户端的 cookie 名称。)

但在生产中,我看不到请求中的 cookie。我做错了什么?

node-express cors

app.use(cors({
  credentials: true,
  origin: 'https://paid-kickstartu-webapp.web.app',
  'Access-Control-Allow-Origin': '*',
}));

还附上我的 Axios 配置和 node-express 后端的屏幕截图,以便进一步了解。一切正常,但 cookie 没有从前端发送到后端。在 localhost 中,两者都按要求工作。

【问题讨论】:

  • 是的,我可以使用 req.cookies.session 访问它们。是什么意思?
  • 我没有尝试使用devServer,尝试在双方都使用localhost。我还尝试了 firebase + local express,我也尝试了 local + heroku,但两者都不起作用

标签: node.js vue.js heroku cookies cross-domain


【解决方案1】:

试试这个

如果您使用 Firebase Hosting + Cloud Functions,则 __session 是您可以存储的唯一 cookie,这是您设计的。这对于我们能够有效地缓存 CDN 上的内容是必要的——我们从请求中剥离除 __session 之外的所有 cookie。这应该记录在案,但似乎没有(哎呀!)。我们将更新文档以反映此限制。

另外,您需要将 Cache-Control Header 设置为私有

res.setHeader('Cache-Control', 'private');

【讨论】:

  • 我不希望这样,我实际上是使用 admin.auth().createSessionCookie 使用令牌生成的 cookie,然后通过响应正文将 cookie 发送到我设置 cookie 的 vuejs vue 使用 vue-cookies。
【解决方案2】:

感谢大家的帮助。我已经解决了这个问题,我之前做的是在 res 正文中获取 cookie 并使用 vue-cookie 在客户端保存 cookie,所以对后端的任何调用都向我显示空 cookie。但是现在我在登录期间从我的后端(node-express)设置 cookie 标头,现在当我发送任何进一步的请求时,我可以看到在登录期间在我的标头中设置的先前 cookie。

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 2017-10-31
    • 2020-07-13
    • 2022-01-10
    • 2017-08-28
    • 2019-09-28
    • 2017-10-09
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多