我在我的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
如何解决此问题?
答案 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>
更新(感谢@RichDeBourke的the 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" } });