为了防止 CSRF 攻击和用户追踪,新版本Chrome浏览器SameSite设置强制执行,第一方cookies在第三方场景正常工作变得尤为重要。跨站点使用的 cookie 必须指定 SameSite=none; secure 来确保将其在第三方场景中正常工作。近期Google Analytics也更新了cookieFlags (analytics.js) 和cookie_flags (App+Web and gtag.js)设置。
Cookie指令
当建立一个新cookie时,我们需要给这个cookie一个名称和值。比如Google Analytics建立的cookie名为“_ga”以及一个根据当前浏览器随机生成的Client ID。
- 是一个session cookie(会话cookie),即无明确过期时间。当浏览器关闭,所有session cookie会被清理。
- 会写入当前浏览器浏览的域名下。
- 会写入当前浏览器浏览的网页路径下。
在这些属性底层,新版Chrome浏览器会默认这些cookie有SameSite=Lax设置。这代表cookie在第三方场景下无法工作。
SameSite值及释义:
- Strict:完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。
- Lax:大多数情况不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。
- None:对于正确支持 None 的浏览器,可以正确发送相关 cookie。
当设定一个cookie时,我们可以根据需求设定如下项:
指令 | 简介 | 示例值 | Google Analytics字段 |
Expires | cookie到期时间,日期字符串。 | Expires=Sat, 3 Oct 2020 14:32:20 GMT | cookieExpires and cookie_expires |
Max-Age | cookie时长,以秒计。 | Max-Age=7200 | – |
Domain | cookie写入的域。 | Domain=webanalytics.com.cn | cookieDomain and cookie_domain |
Path | cookie写入的路径。 | Path=/ | – |
Secure | 只接收来自HTTPS协议的请求。 | Secure | – |
HttpOnly | 阻止cookie与JavaScript绑定。 | HttpOnly | – |
SameSite | 明确cookie可被绑定的场景。 | SameSite=Strict | – |
如上表所示,一些项目已经存在于Google Analytics设置当中,但是也有一些设置选项并不在其中。
新的cookieFlags选项
新cookieFlags选项允许我们新建cookie时设置不同cookie指令。cookieFlags值是一系列以英文逗号区分的小写字母。例如:max-age=7200;domain=webanalytics.com.cn;path=/;secure;samesite=none
按照以上值设置Google Analytics cookie的cookieFlags,代表过期时间是2小时(7200秒),位于域 webanalytics.com.cn的根目录,只通过HTTPS协议传输,以第三方cookie形式工作。
还有重要的一点,cookieFlags相比其他cookie设置享有更高优先权,比如cookie其他选项值也有cookieExpires和cookieDomain信息,且和cookieFlags冲突,将以cookieFlags的内容为主。
设置analytics.js的cookieFlags选项
Universal Analytics脚本使用如下代码:
ga(‘create’, ‘UA-XXXXX-Y’, {cookieFlags: ‘max-age=7200;secure;samesite=none’});
设置gtag.js的cookieFlags选项
gtag.js的cookieFlags名称为cookie_flags,代码如下:
gtag(‘config’, ‘G-XXXYYY’, {cookie_flags: ‘max-age=7200;secure;samesite=none’});
在Google Tag Manager中设置cookieFlags
Universal Analytics代码:
在GA变量代码要设置的字段中进行设定。
App+Web设置代码
小结
网站中有很多情境需要Google Analytics第一方cookie与第三方场景联系起来。比如整个订单流程,外接表单功能,登录插件等。
如果没有samesite=none;secure的Google Analytics设置,GA的cookie将无法在第三方场景中生效,统计数据会丢失。
参考资料:
这篇文章有用吗?
点击星号为它评分!
平均评分 5 / 5. 投票数: 1
到目前为止还没有投票!成为第一位评论此文章。
很抱歉,这篇文章对您没有用!
让我们改善这篇文章!
告诉我们我们如何改善这篇文章?
赞猫