当前位置: 首页 > 知识库问答 >
问题:

如何设置Google Analytics(分析)Global Site Tag(gtag.js)使用的Cookie的安全属性?

衡修洁
2023-03-14

我在Github页面上使用Google Analytics Global Site Tag(gtag.js)跟踪代码。复制以下跟踪代码并将其作为第一项粘贴到

<!-- 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>

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

Cookie“_ga”将很快被拒绝,因为它的“sameSite”属性设置为“none”或无效值,而没有“secure”属性。要了解有关“sameSite”属性的更多信息,请阅读https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

Cookie“\u gid”将很快被拒绝,因为它的“sameSite”属性设置为“none”或无效值,而没有“secure”属性。要了解有关“sameSite”属性的更多信息,请阅读https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

如何解决此问题?


共有3个答案

董康平
2023-03-14

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

ReactGA.initialize("UA-XXXXXX-1", { gaOptions: { cookieFlags: "SameSite=None;Secure" } });
乐正洲
2023-03-14

我刚刚设置了一个Google Analytics 4属性,在Firefox控制台中得到了与原始问题相同的警告:

Cookie“_ga”将很快被拒绝,因为它的“sameSite”属性设置为“none”或无效值,而没有“secure”属性。。。

但是将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>

也许谷歌分析API改变了什么?

Google文档似乎表明set是传递cookie_flags的方式。

刘永望
2023-03-14

gtag.jscookie设置可以自定义。具体来说,我们可以设置cookie_flags字段来解决该问题。

在跟踪代码中,行

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的评论):

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

Cookie “_ga” has been rejected for invalid domain.

要解决此问题,需要配置gtag.js的cookie域。原来答案中提到的那句台词

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',
});

然后,整个跟踪代码如下所示(别忘了用您自己的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', {
    cookie_domain: 'YOUR_GITHUB_PAGES_DOMAIN',
    cookie_flags: 'SameSite=None;Secure',
  });
</script>

 类似资料:
  • 问题内容: 我正在尝试使用RestTemplate和Jackson json转换器调用Restful JSON服务。现在,为了调用该服务,我需要传递一个安全性cookie。我可以通过使用URLConnection来实现(请参见下面的代码) RestTemplate中与此并行的是什么?这是我一直在使用RestTemplate调用Restful Service的代码片段: 我无法弄清楚在使用RestT

  • 问题内容: 我有一个运行在Cedar堆栈上的node.js应用程序,我很困惑为什么安全cookie无法正常工作。 在localhost上,一切正常,但在heroku上,我似乎无法设置安全cookie。我究竟做错了什么?该文档称,负载平衡器终止SSL,它说的是配置在那里? 非常感谢 问题答案: 您认为Heroku在到达您的应用之前会先终止SSL。这导致express看到非SSL流量,这可能就是为什么

  • 问题内容: 如何使用jQuery设置和取消设置Cookie,例如创建一个名为的Cookie 并将其值设置为? 问题答案: 2019年4月更新 Cookie的读取/操作不需要jQuery,因此请不要使用下面的原始答案。 转到https://github.com/js-cookie/js-cookie,然后在其中使用不依赖jQuery的库。 基本示例: 有关详细信息,请参见github上的文档。 参见

  • 问题内容: 刚收到安全审核的结果-除两件事外,其他一切都清晰可见 没有http标志的会话cookie。 没有设置安全标志的会话cookie。 该应用程序是用php编码的,修复建议为: 使用仅http标志设置会话cookie 使用安全标志设置会话cookie 我看过一些示例,但并不完全了解如何在Linux服务器上实现。我无权访问 .ini 文件。是否可以在htaccess文件中进行设置? 或者,如何

  • 首先,我尝试在docker映像上托管一个。这是CURL输出,对我来说没有意义。 尝试:1 TCP_节点延迟设置 连接到本地主机(::1)端口13443(#0) ALPN,提供h2 ALPN,提供http/1.1 密码选择:全部:!出口:!出口40:!出口56:!阿努尔:!低:!RC4:@STRENGTH 已成功设置证书验证位置: CAfile:cfm。wdf。液公司总部:无。0(输出),TLS握手

  • 我有一个有效的配置,它包装了基于jersey的RESTendpoint,并允许方法级访问。 包含快速重现问题所需的一切的示例项目:https://github.com/pulkitsinghal/dummy-rest-api 但在为受保护的endpoint编写健全性测试时,我遇到了以下异常,这种异常只发生在单元测试中: 以下是基于JerseyTest的单元测试类的外观: 在为受Spring Sec