如何让js-cookie跨带/不带WWW前缀的域名共享验证Cookie?
问题出在你当前设置的Cookie默认绑定了当前访问的具体域名(比如www.yourdomain.com),当用户切换到不带WWW的域名(yourdomain.com)时,浏览器会判定这是两个不同域名,自然读不到之前存的Cookie,导致弹窗重复出现。
修复步骤
在设置Cookie的时候,加上domain配置项,指定为你的根域名(注意前面要加.),这样所有属于这个根域名的子域名(包括WWW和非WWW)都能共享这个Cookie。
修改你的Cookie设置代码:
Cookies.set('validAge', true, { expires: 90, domain: '.yourdomain.com' // 替换成你的实际根域名,比如.example.com });
另外,读取Cookie时也可以显式指定domain(虽然js-cookie会自动尝试匹配,但显式写出来更稳妥):
if (!Cookies.get('validAge', { domain: '.yourdomain.com' })) { $('.age-gate__modal').show(); }
额外提示
- 一定要把
.yourdomain.com替换成你网站的真实根域名,比如你的网站是www.myshop.com,就写.myshop.com - 这个配置只对同根域名的子域名生效,跨主域名(比如从example.com跳到test.com)没法共享Cookie
- 如果你的网站已经启用HTTPS,建议加上
secure: true,确保Cookie只在加密连接下传输,更安全:
Cookies.set('validAge', true, { expires: 90, domain: '.yourdomain.com', secure: true });
内容的提问来源于stack exchange,提问作者Branos
相关产品推荐
相关产品推荐

