【问题标题】:Get cookie on first render returns undefined with universal-cookie在第一次渲染时获取 cookie 返回 undefined with universal-cookie
【发布时间】:2019-12-04 03:16:33
【问题描述】:

我正在使用 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);

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

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

【问题讨论】:

    标签: javascript reactjs cookies


    【解决方案1】:

    这是一个非常古老的帖子,所以我确定我的回答为时已晚,但我最近自己也遇到了类似的问题,希望我能在某个地方帮助某人。

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

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 2021-09-03
      • 1970-01-01
      • 2022-08-17
      • 2016-05-12
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多