什么是cookieFlags
cookieFlags是Google Analytics新增增加的的一个设置,这个设置只存在于统一版跟踪代码、全局版跟踪代码和APP+Web,其中统一版对应的是cookieFlags,全局版和APP+Web对应的是cookie_flags.
cookieFlags可以设置的字段有:
字段 |
描述 |
实例值 |
Google Analytics中的字段 |
Expires | Cookie的最长有效期,由日期字符串制定 | Expires=Tue, 24 Mar 2020 13:37:28 GMT | cookieExpires 和 cookie_expires |
Max-Age | Cookie的最长有效期,以秒为单位 | Max-Age=7200 | — |
Domain | Cookie写入的域 | Domain=ichdata.com | cookieDomain 和 cookie_domain |
Path | Cookie的写入路径 | Path=/ | — |
Secure | 如果仅通过HTTPS发出请求,则cookie仅发送到服务器。 | Secure | — |
HttpOnly | 阻止使用JavaScript访问cookie。 | HttpOnly | — |
SameSite | 指定可以访问cookie的上下文。 | SameSite=Strict | — |
如cookieFlags可以设置为:
max-age=7200;domain=ichdata.com;path=/;secure;samesite=none
表示在ichdata.com的根路径上创建cookie,两小时内可以通过https是的形式一起发送给第三方cookie。简单的就是能够被第三方cookie使用。
为什么要设置cookieFlags
为了解决最新版的Chrome浏览器中的SameSite规则,在最新版的Chrome浏览器中,由于google analytics的client,也就是coolie _ga是没有设置Samesite的,所以默认是被视为Samesite=Lax,这意味着第三方上下文中访问cookie的时候不可用。
关于SameSite的详细可以看:Chrome 80:Google 终于对第三方cookie出手了
这样设置才允许第三方访问Google Analytics的第一方cookie,主要是跨站跨域的时候才会用到,需要跟踪到同一个用户的时候就需要读取第一方cookie。
如何设置cookieFlags
不同版本跟踪代码的使用字段是不一样的,统一版analytics.js使用的是cookieFlags,全局版gtag.js和Web+APP使用的是cookie_flags,具体示例如下:
在analytics.js中设置字段
Universal Analytics的设置方法如下:
ga('create', 'UA-XXXXX-Y', { <a href="https://www.ichdata.com/tag/cookieflags" title="查看更多关于cookieFlags的文章" target="_blank">cookieFlags</a>: 'max-age=7200;secure;samesite=none' });
在gtag.js中设置字段
统一版的设置方法如下:
gtag('config', 'G-N2A3FMNDT5', { cookie_flags: 'max-age=7200;secure;samesite=none' });
在GTM中设置
统一版analytics.js
使用cookieFlags字段:
Web+APP的
使用cookie_flags:
添加前后的效果
添加前:
Samesite为空的,默认是Lax,不能被第三方使用。
Samesite和Secure都设置好的,可以第三方上下文中可用。
什么情况下用
需要在第三方上下文中访问Google Analytics(分析)使用的第一方Cookie的时候,如嵌入式预订流程,嵌入式表格和登录门户,主要就是跨站和跨域跟踪的时候要识别到同一个用户/ID的时候
参考:
https://www.simoahava.com/analytics/cookieflags-field-google-analytics/