如何设置Google Analytics(分析)全局网站代码(gtag.js)使用的Cookie的“安全”属性?

时间:2020-06-25 06:48:04

标签: google-analytics gtag.js

我在我的Github页面上使用了Google Analytics(分析)全局站点代码(gtag.js)跟踪代码。以下跟踪代码作为第一项复制并粘贴到我要跟踪的每个网页的['sam', 'is', 'a', 'is', 'good', 'person', 'person'] ['sam', 'is', 'a', 'is', 'good', 'person'] 中(我将自己的跟踪ID替换为<HEAD>):

GA_MEASUREMENT_ID

最近,当我使用Firefox浏览器打开Github Pages网站时,控制台会记录以下警告消息:

<!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'GA_MEASUREMENT_ID'); </script>

Cookie “_ga” will be soon rejected because it has the “sameSite” attribute set to “none” or an invalid value, without the “secure” attribute. To know more about the “sameSite“ attribute, read https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

如何解决此问题?

3 个答案:

答案 0 :(得分:11)

The gtag.js cookie settings can be customized。具体来说,我们可以设置cookie_flags field来解决该问题。

在跟踪代码中,该行

gtag('config', 'GA_MEASUREMENT_ID');

应更改为

gtag('config', 'GA_MEASUREMENT_ID', { cookie_flags: 'SameSite=None;Secure' });

解决此问题。

因此,整个跟踪代码应如下(不要忘记用自己的跟踪ID替换GA_MEASUREMENT_ID的两次出现)

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'GA_MEASUREMENT_ID', { cookie_flags: 'SameSite=None;Secure' });
</script>

更新(感谢@RichDeBourkethe comment):

控制台仍可以记录如下警告消息:

Cookie “_ga” has been rejected for invalid domain.

要解决此问题,需要配置cookie domain of gtag.js。所以原始答案中提到的那一行

gtag('config', 'GA_MEASUREMENT_ID', { cookie_flags: 'SameSite=None;Secure' });

应进一步编辑为

gtag('config', 'GA_MEASUREMENT_ID', {
  cookie_domain: 'YOUR_GITHUB_PAGES_DOMAIN',
  cookie_flags: 'SameSite=None;Secure',
});

然后,整个跟踪代码如下(不要忘记将YOUR_GITHUB_PAGES_DOMAIN替换为您自己的GitHub页面域(通常是<username>.github.io,其中<username>是您实际的GitHub用户名)和GA_MEASUREMENT_ID的两次出现(带有您自己的跟踪ID):

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'GA_MEASUREMENT_ID', {
    cookie_domain: 'YOUR_GITHUB_PAGES_DOMAIN',
    cookie_flags: 'SameSite=None;Secure',
  });
</script>

答案 1 :(得分:2)

我刚刚设置了Google Analytics(分析)4属性,并在Firefox控制台中收到与原始问题相同的警告:

Cookie“ _ga”将很快被拒绝,因为它具有“ sameSite” 属性设置为“无”或无效值,而没有“安全” 属性。 ...

但是将cookie_flags作为选项添加到gtag('config', ...)调用中对我来说不起作用。

浏览器cookie存储表明,GA cookie确实没有安全存储。

我能够通过添加一个额外的gtag('set', ...)来解决此问题,例如:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('set', {cookie_flags: 'SameSite=None;Secure'});
  gtag('config', 'GA_MEASUREMENT_ID');
</script>

也许Google Analytics(分析)API发生了某些变化?

Google Documentation似乎表明set是您应该传递cookie_flags的方式。

答案 2 :(得分:0)

如果您使用的是 react-ga npm 包:

ReactGA.initialize("UA-XXXXXX-1", { gaOptions: { cookieFlags: "SameSite=None;Secure" } });