首次渲染时获取 cookie 返回未定义的通用 cookie



我正在使用universal-cookie并试图在第一次渲染时获取我的cookie。但是,它返回undefined,但是当我刷新页面时,我可以看到它。

首先,我需要导入 cookie 包:

class PosAdmin extends Component{
cookies = new Cookies();
.....

然后我需要设置 cookie,我这样做。在我的承诺中,我得到了:

.then(result => {
if (result.value) {
const cookieId = uuidv4();
this.cookies.set(cookieDevicePairConstants.POS,
cookieId,
{
path: '/admin',
maxAge: 31536000
});
const posToSelect = {
...pos,
cookieId
}
this.props.updateSelectedPos({
variables: {
pos: posToSelect
}
}).then(() => {
this.props.pairPosWithDevice({
variables: {
posId: posToSelect.id,
cookieId
}
});
}).then(() => {
this.props.posQuery.updateQuery((prev) => {
const newData =
prev.getPoses.map(pos => posToSelect.id === pos.id ? posToSelect : pos);
return { getPoses: newData };
});
});
}
});

当我尝试获取饼干时,我在render内执行此操作:

let thisDeviceCookieId = this.cookies.get(cookieDevicePairConstants.POS);

但是它一开始返回未定义,但是在我刷新页面后,我可以看到其中的值。我绝对不知道出了什么问题,我感谢我能得到的所有帮助。

感谢您抽出宝贵时间阅读。

这是一个非常古老的帖子,所以我相信我的答案为时已晚,但我自己最近遇到了类似的问题,我希望我能够帮助某人。

在某些情况下,当cookie的sameSite属性设置为"严格"时,特别是当第三方网站重定向到我的网站时,我注意到了这一点。这不仅仅是一个通用cookie问题,因为document.cookie属性中也缺少cookie。确保 cookie 的 sameSite 属性设置为"宽松"、"无"或"未设置",或者 cookie 的"路径"属性与第三方重定向到的路径完全相同(尚未对此进行测试(。我怀疑如果它"未设置"某些浏览器安全设置可能默认为严格?无论如何,更改cookie的相同站点属性为我解决了这个问题。

最新更新