【问题标题】:Firebase hosting with rewrite to function doesn't set session cookie具有重写功能的 Firebase 托管不会设置会话 cookie
【发布时间】:2018-04-08 09:26:54
【问题描述】:

我正在使用带有 express-session 和 firebase 的 nodejs express 应用程序。

Firebase 托管配置为重定向到 Firebase 函数。

我正在尝试在会话中存储一些数据。如果我通过函数 url 访问应用程序,它会完美运行。

但是,当我尝试通过托管 url 访问应用程序时,应用程序不会存储会话 cookie。

例如

http://localhost:5001/my-project/us-central1/app/ - this one sets cookie

http://localhost:5000/ - this one not.

我的应用会话配置如下:

app.use(
    session({
        secret: appConfig.appSecret,
        name: '__session',
        cookie: {
            secure: false,
            httpOnly: false
        }
    })
);

如何强制firebase托管设置cookie?

【问题讨论】:

  • Hosting 不会设置 cookie,因此您可能必须通过函数将要设置 cookie 的所有路由提供给服务器。

标签: firebase express google-cloud-functions firebase-hosting express-session


【解决方案1】:

终于找到了解决办法。

为了设置 __session cookie,您需要为带有会话的响应设置标头。

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

【讨论】:

  • 和 cookie 一样……你救了我的命,谢谢你的提问和回答:)
  • 如果应用依赖 Firebase Hosting 的重写规则,你知道为什么需要这个 'Cache-control' 标头来成功设置 cookie 吗?
  • 我认为这与 Firebase 托管的缓存机制和 cdn 功能有关,但不是 100% 有把握。
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 2018-04-11
  • 2020-05-14
  • 2020-02-03
  • 1970-01-01
  • 2018-06-12
  • 2018-12-09
  • 2019-09-10
相关资源
最近更新 更多