在 www 站点了接受,跳到 shop 子域又弹一遍,再点一次回到主站还是弹,同一个用户被连续弹了三次,投诉直接进了工单。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

document.cookie = 'consent=1; Domain=.example.com; Path=/;'
  + ' Max-Age=15552000; Secure; SameSite=Lax';

同意状态写在主域 Cookie 上却没设 Domain,浏览器只在当前主机名下发送,子域读不到。两边的 localStorage 也各自独立,状态永远同步不了。这一点先确认清楚,后面就不用反复试。

「子域同意共享」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

具体做法是,写 Cookie 时把 Domain 设成 .example.com,主域和所有子域都能读到;路径统一写成 /,别只在某个目录下生效;子域读取失败时先看 Cookie 列表,确认域和路径都带上了。

改完照着核一遍,主站点同意后打开多个子域,都不再弹横幅,Application 里这个 Cookie 的域显示为 .example.com。

作者 9823189