Sag*_*fek 15 javascript cookies firebase firebase-hosting google-cloud-functions
我按照授权的https-endpoint样本,只添加了console.log来打印req.cookies,问题是cookie总是空的{}我使用客户端JS调用设置cookie但他们确实保存但是由于某些原因,我可以不要让他们在服务器端.
这是index.js的完整代码,它与示例完全相同:
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const express = require('express');
const cookieParser = require('cookie-parser')();
const cors = require('cors')({origin: true});
const app = express();
const validateFirebaseIdToken = (req, res, next) => {
console.log(req.cookies); //// <----- issue this is empty {} why??
next();
};
app.use(cors);
app.use(cookieParser);
app.use(validateFirebaseIdToken);
app.get('/hello', (req, res) => {
res.send(`Hello!!`);
});
exports.app = functions.https.onRequest(app);
Run Code Online (Sandbox Code Playgroud)
商店cookie:
curl http://FUNCTION_URL/hello --cookie "__session=bar" // req.cookies =
{__session: bar}
不存储:
curl http://FUNCTION_URL/hello --cookie "foo=bar" // req.cookies =
{}
Mic*_*igh 30
如果您使用的是Firebase托管+云功能,__session则是您可以按设计存储的唯一Cookie.这对于我们能够有效地在CDN上缓存内容是必要的 - 我们除了请求之外从请求中删除所有cookie __session.这应该记录在案,但似乎不是(哎呀!).我们将更新文档以反映此限制.
此外,您需要将Cache-Control Header设置为private
res.setHeader('Cache-Control', 'private');
Run Code Online (Sandbox Code Playgroud)
ehe*_*hed 10
哇,这花了我 2 天的调试时间。它被记录在案(在 Hosting > Serve dynamic content and host microservices > Manage cache behavior 下,但不在我认为有用的地方——它位于“使用 Cookies”的最底部)。他们提供的Manage Session Cookies上的示例代码使用 cookie 名称,session而不是__session在我的情况下,这是导致我出现此问题的原因。
不确定这是否特定于仅通过云功能提供的 Express.js,但这是我的用例。最令人沮丧的部分是,当使用firebase serve缓存在本地进行测试时,它没有考虑在内,所以它工作得很好。
| 归档时间: |
|
| 查看次数: |
4672 次 |
| 最近记录: |