【发布时间】:2021-10-25 13:04:42
【问题描述】:
我正在使用通过 Firebase Hosting 在自定义域 - api.example.com 上托管的 Firebase Functions。
当用户登录我的网站时,会向服务器发送请求
await fetch(`https://api.example.com/test`, {
method: 'POST',
credentials: 'include',
})
.then(async function (response) {
if (response.status == 200) {
let text = await response.text();
console.log(text);
}
else {
console.log("Failed");
return null;
}
});
在 Cloud Functions 中,测试端点被触发,如下所示:
exports.test = functions
.https.onRequest((request, response) => {
const expiresIn = 60 * 60 * 24 * 5 * 1000;
const origin = request.headers.origin;
const options = { maxAge: expiresIn, httpOnly: true, secure: true, sameSite: 'None'};
response.cookie('__session', "123456", options);
response.set('Access-Control-Allow-Origin', origin);
response.set('Access-Control-Allow-Credentials', true);
response.set('Access-Control-Allow-Headers', 'credentials');
response.end(JSON.stringify({ status: 'success' }));
})
问题是:
mozilla、chrome、safari 的浏览器开发工具显示服务器的响应,其中标头包含 set-cookie: __session=123456; Max-Age=432000; Path=/; Expires=Mon, 30 Aug 2021 11:25:25 GMT; HttpOnly; Secure; SameSite=None 但 cookie 未存储在 Mozilla Firefox 和 Safari 中。在 Chrome 中,它会被存储,但在页面刷新后会被删除,尽管它应该会持续存在。
我在这里做错了什么?有什么建议吗?
【问题讨论】:
标签: firebase google-chrome cookies google-cloud-functions cross-domain