使用 SameSite 和 Secure 属性设置 Google Tag Manager cookie

Posted

技术标签:

【中文标题】使用 SameSite 和 Secure 属性设置 Google Tag Manager cookie【英文标题】:Setting Google Tag Manager cookies with SameSite and Secure attributes 【发布时间】:2020-02-09 03:57:44 【问题描述】:

Chrome 报告以下警告:

在没有SameSite 属性的情况下设置了与https://www.googletagmanager.com/ 的跨站点资源关联的cookie。如果设置了SameSite=NoneSecure,Chrome 的未来版本将只提供带有跨站点请求的cookie。您可以在开发人员工具中的 Application>Storage>Cookies 下查看 cookie,并在 https://www.chromestatus.com/feature/5088147346030592 和 https://www.chromestatus.com/feature/5633521622188032 上查看更多详细信息。

我有两个这种类型的警告。我看到的三个cookie是gtm_authgtm_previewgtm_debug。所有会话 cookie。我看到gtm_auth 设置了Secure 属性(SameSite 属性为空)。其他两个 cookie 都没有设置任何属性。

顺便说一下,它们被归类为分析 cookie,而不是营销 cookie。

使用Google Tag Manager,如何设置或修改这些cookies?我不想更新代码中的 cookie。我想使用Google Tag Manager 添加cookie 属性应该是可行的。对于如何通过Google AnalyticsGoogle Tag Manager 解决这个问题,Google 的立场是什么?

【问题讨论】:

【参考方案1】:

对于任何这些警告,如果您不对域负责,则您不负责更新 cookie。 Google 跟踪代码管理器团队将负责从 googletagmanager.com 更新为 cookie 设置 SameSite 属性的相关代码。

此时,警告纯粹是信息性的,不会影响功能。计划在 M80 之前在稳定的 Chrome 中强制执行此行为,目前的目标是 2020 年 2 月。

【讨论】:

谢谢。你是对的。我看到是 GTM 代码设置了这些 cookie,我无法控制它们。事实上,从我的跟踪中,我看到它们最初被 Google 的代码设置为空字符串。这不取决于我来解决。由 GTM/GA 人员确保他们的代码与 Google Chrome 更改一致。 不过,如果警告更有针对性,那就太好了。也许 Chrome 团队可以排除像 tagmanager.com 这样谷歌自己控制的域,这样控制台就不会像这样发送垃圾邮件。它以许多开发人员的时间为代价来传播这个词,让人们试图修复他们的网站,而实际上他们无法修复。 我们正在这里寻找选项,但对我们 Chrome 而言重要的一点是,我们不想将 Google 属性视为任何特殊情况。减少这些警告的方法是让 Google 服务修复他们正在计划的 cookie。不过,我很感激提取与您的域相关的 cookie 是一项挑战。 此警告不再是信息性的,Chrome 现在会阻止它。 在撰写本文时,更改正在推出中。有些浏览器会阻止,有些则不会。您可以在 samesite-sandbox.glitch.me 上查看您的浏览器的行为。【参考方案2】:

Chrome 已经在推出这项更改。您可以在 analytics.js 或 gtag.js 中设置 cookie 标志以使其正常工作,例如:

gtag('config', 'G-N2A3FMNDT5', 
  cookie_flags: 'max-age=7200;secure;samesite=none'
);

更多信息和背景,请看这篇博文:The New cookieFlags Setting In Google Analytics

【讨论】:

以上是关于使用 SameSite 和 Secure 属性设置 Google Tag Manager cookie的主要内容,如果未能解决你的问题,请参考以下文章

即使设置了 sameSite:'none' 和 secure: true 对于 MERN 堆栈 Web 应用程序,Cookie 也不会保存在 chrome 中

Chrome 控制台 SameSite Cookie 属性警告

为啥我在尝试实施 Gmail Oauth 时将“SameSite”属性设置为“无”或无效值,而没有“安全”错误

对于未来chrome80 samesite问题的兼容解决方案

Flask cookie 没有 SameSite 属性

如何在 Cookie 上指定 SameSite 和 Secure(使用 axios/React/Node Express)