为了防止 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

如果新建的cookie除名称和值之外无其他内容,也会包含以下默认属性:
  • 是一个session cookie(会话cookie),即无明确过期时间。当浏览器关闭,所有session cookie会被清理。
  • 会写入当前浏览器浏览的域名下。
  • 会写入当前浏览器浏览的网页路径下。

在这些属性底层,新版Chrome浏览器会默认这些cookie有SameSite=Lax设置。这代表cookie在第三方场景下无法工作。

SameSite值及释义:

  • Strict:完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。
  • Lax:大多数情况不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。
  • None:对于正确支持 None 的浏览器,可以正确发送相关 cookie。
GA Cookie
GA cookie示例,已设置samesite=none

当设定一个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变量代码要设置的字段中进行设定。
cookieflags

App+Web设置代码

cookie_flags

小结

网站中有很多情境需要Google Analytics第一方cookie与第三方场景联系起来。比如整个订单流程,外接表单功能,登录插件等。

如果没有samesite=none;secure的Google Analytics设置,GA的cookie将无法在第三方场景中生效,统计数据会丢失。

参考资料:

The New cookieFlags Setting In Google Analytics

这篇文章有用吗?

点击星号为它评分!

平均评分 5 / 5. 投票数: 1

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

  • Post last modified:2021年7月9日

这篇文章有一个评论

  1. RZ

    赞猫

评论关闭。