尽管设置了域,但隐身浏览器无法识别在子域中设置的JavaScript cookie

问题描述

我有一个登陆页面子域(通过unbounce创建),它是这样的:get.example.com。显示cookie横幅,并将选择内容写入cookie。我们为此使用js.cookie作为一个库,(为清楚起见,我们简化了一些gtm事件等)功能如下:

function storeConsent(name,value,exdays) {
     Cookies.set(name,{ expires: exdays,domain: 'example.com',path: '/',sameSite: 'Lax'});}

请注意,我明确不包含如前所述的前导点(.example.com)。 MDN Cookie documentation

与先前的规范相反,域名中的前导点被忽略,但是浏览器可能拒绝设置包含此类内容的cookie 点。如果指定了域,则始终包含子域。

读取功能

function hasConsent(name) {
     return !!Cookies.get(name);}

如果函数hasConsent()返回False,则显示横幅,如果为True,则不显示横幅。

进入登录页面时,系统会提示用户填写表格。提交后,它们将被重定向到我们的顶级域名example.com。由于Cookie中的域设置为顶级域,因此可以识别同意cookie,并且不会再次显示横幅。

这在浏览器的“正常”状态下可以正常工作,但是在隐身模式下进行测试时,无法读取Cookie并再次显示标语。我确实在开发环境中看到了cookie,但是cookie在域(.example.com)上有一个前导点,据我所知应该识别,但不是。 在顶级域上,同意使用cookie横幅会设置一个新cookie,该cookie具有相同的名称,但没有前导点(example.com而不是.example.com)。这样会导致向同一用户两次显示cookie横幅,并可能会显示两个具有相同名称但不一定共享相同内容的cookie。

总结:在子域中设置的cookie在隐身模式下无法在topdomain上识别,即使在cookie中指定了域也是如此。可能是什么问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)