Chrome中无法通过document.cookie删除指定_ga Cookie的技术求助
嘿,我太懂你在Chrome里删_ga Cookie时的糟心感受了——常规方法不管用,设为空还搞出俩Cookie,这其实是因为你没匹配上原Cookie的完整属性!
Google Analytics设置的_ga Cookie是带有特定domain和path属性的,浏览器识别Cookie靠的是「名称+域名+路径」这三个维度。如果删除时不指定和原Cookie完全一致的domain和path,浏览器就会觉得你在操作另一个新Cookie,自然删不掉原有的,甚至会出现重复的情况。
正确的删除步骤:
先确认原
_gaCookie的属性
打开Chrome开发者工具(按F12),切换到「Application」标签页,找到「Cookies」-> 你的网站域名,查看_gaCookie的Domain和Path值。通常Path是/,Domain可能是.yourdomain.com(注意前面的点,代表覆盖所有子域名)或者直接是yourdomain.com。用匹配属性的代码删除
选你习惯的方式就行:- 方法一:设置过期时间为过去
document.cookie = "_ga=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=.yourdomain.com;"; - 方法二:设置
max-age=0document.cookie = "_ga=; max-age=0; path=/; domain=.yourdomain.com;";
记得把代码里的
.yourdomain.com换成你实际查到的域名,比如原Cookie的Domain是example.com,就改成domain=example.com;。- 方法一:设置过期时间为过去
为什么设为空会出现两个Cookie?
当你只写document.cookie = "_ga=;"时,浏览器会自动给这个新Cookie套上当前页面的域名和路径(比如你在blog.example.com的/blog页面操作,新Cookie的域名就是blog.example.com、路径是/blog),这和GA设置的_ga Cookie(域名.example.com、路径/)不是同一个,所以就会同时存在俩同名但属性不同的Cookie了。
额外注意点:
- 如果你在子域名页面操作,必须用顶级域名的
domain值(比如.example.com),不能用子域名(blog.example.com),否则删不掉顶级域名下的_gaCookie。 - 代码必须在和Cookie同域的页面运行,跨域是没法操作其他域名Cookie的。
- 如果删除后
_gaCookie又自动冒出来,那大概率是页面上的Google Analytics脚本重新生成了它,这时候你可能得先阻止GA脚本加载,再执行删除操作。
内容的提问来源于stack exchange,提问作者Steve

