【问题标题】:Firebase functions doesn't return set-cookies headerFirebase 函数不返回 set-cookies 标头
【发布时间】:2017-08-20 13:23:04
【问题描述】:

我想知道为什么在 firebase 函数中设置 set-cookie 标头时,在使用 firebase 工具模拟器时,它不会显示在浏览器的响应标头中。

exports.test = functions.https.onRequest((req, res) => {
  res.setHeader('Authorization', 'Bearer token')
  res.setHeader('Set-Cookie', ['__session=ninja'])
  res.end()
})

【问题讨论】:

  • 通常你不想在响应上设置Authorization(它属于请求),但我不确定为什么cookie不会被设置。我们可能正在剥离它,只允许客户端设置的 cookie,下周初将不得不进行调查。
  • 是的,我正在测试它。使用 express cookie-parser 和 cookie-session 时,我得到的是:在 firebase 上服务:没有使用 res.cookie('__session') 设置 cookie,也没有使用 req.session.token = token on firebase 设置 cookie部署没有使用 res.cookie('__session') 设置的 cookie 和使用 req.session.token = token 设置的 cookie 但它不会在 req 中读取,因为 firebase 只允许 '__session'。试图在浏览器端进行无 js 类型的身份验证以使其渐进但我无法设置它
  • 似乎 Firebase 模拟器不允许设置 cookie。但是当部署到 Firebase 托管时,cookie 已设置好并且可以正常工作

标签: javascript firebase google-cloud-functions firebase-hosting


【解决方案1】:

此功能是独立功能,还是您将其与 Firebase 托管集成?我尝试了以下功能:

exports.headers = functions.https.onRequest((req, res) => {
  res.setHeader('X-Test', 'OK');
  res.setHeader('Set-Cookie', ['__session=ninja'])
  res.send('OK');
});

我在响应中看到了 x- 和 set-cookie 标头。

【讨论】:

  • 我将它与 firebase 功能集成。当部署在 firebase 中时,它可以工作,但在本地客户端(使用 firebase 服务时),它不会。当我还使用带有 firebase 功能的 express js 时,它在部署和本地都不起作用
【解决方案2】:

另外,您需要将 Cache-control 设置为私有:

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

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 2014-12-07
    • 2013-05-30
    • 2019-07-03
    • 2018-11-22
    • 2020-10-01
    • 2020-12-30
    • 1970-01-01
    • 2021-07-02
    相关资源
    最近更新 更多