我正在使用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 };
});
});
}
});
当我尝试获取Cookie时,我正在render
内执行此操作:
let thisDeviceCookieId = this.cookies.get(cookieDevicePairConstants.POS);
但是它首先返回undefined,但是刷新页面后,我可以在其中看到值。我绝对不知道出了什么问题,我对我所能获得的所有帮助表示赞赏。
感谢您抽出宝贵的时间阅读。
答案 0 :(得分:1)
这是一篇很老的文章,所以我确定我的回答为时已晚,但是我本人最近也遇到了类似的问题,希望我能在某个地方帮助某人。
在某些情况下,当cookie的sameSite属性设置为“严格”时,尤其是在第三方网站重定向到我的站点时,我注意到了这一点。这不仅是通用cookie的问题,因为document.cookie属性中也缺少cookie。确保cookie的sameSite属性设置为“ lax”,“ none”或“ unset”,或者确保cookie的“ path”属性与第三方重定向到的路径完全相同(未经测试)这个)。我怀疑是否“未设置”某些浏览器安全设置可能默认为严格设置?无论如何,更改cookie的sameSite属性都会为我解决此问题。