Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Analytics是否设置了禁止未经同意的用户使用Cookie的功能_Javascript_Cookies_Google Analytics - Fatal编程技术网

Javascript Google Analytics是否设置了禁止未经同意的用户使用Cookie的功能

Javascript Google Analytics是否设置了禁止未经同意的用户使用Cookie的功能,javascript,cookies,google-analytics,Javascript,Cookies,Google Analytics,根据欧盟电子隐私指令(又称“Cookie法”)第5(3)条,针对欧盟用户的网站在设置Cookie之前必须获得用户的选择加入同意 看 我正试图在我的网站上与谷歌分析进行对比 我可以想象Google Analytics(GA)可以在不需要使用cookies的情况下进行一定程度的分析数据收集 但是,我在谷歌网站/设置面板上找不到关于如何在页面请求期间将“同意状态”信息转发回谷歌的任何信息。因此,我唯一的选择似乎是,如果用户没有明确同意,我根本不应该嵌入谷歌标签代码。这似乎有点过激 让我的服务器端脚本在

根据欧盟电子隐私指令(又称“Cookie法”)第5(3)条,针对欧盟用户的网站在设置Cookie之前必须获得用户的选择加入同意

我正试图在我的网站上与谷歌分析进行对比

我可以想象Google Analytics(GA)可以在不需要使用cookies的情况下进行一定程度的分析数据收集

但是,我在谷歌网站/设置面板上找不到关于如何在页面请求期间将“同意状态”信息转发回谷歌的任何信息。因此,我唯一的选择似乎是,如果用户没有明确同意,我根本不应该嵌入谷歌标签代码。这似乎有点过激

让我的服务器端脚本在JavaScript标记中设置一个
hasApprovedToCookies=FALSE
标志将允许我指示Google的服务以优雅的降级方式运行

Google Analytics上是否有禁止使用cookies的设置 对于尚未给予同意的用户


如果是这样的话,我在哪里可以找到这方面的信息?

GA在没有cookies的情况下无法工作,如果访问者以前访问过您的网站,它需要它来“识别”访问者。因此,GA中没有对此进行设置,GA只是在无法创建cookie时不会记录访问者

如果用户来自欧盟并且没有选择加入,那么我认为您应该排除google analytics脚本。

编辑:有一个google analytics设置用于异步GA代码段。

没有Google Analytics设置,正如您所建议的,如果您想使用Google Analytics Javascript跟踪脚本,您需要有条件地排除那些未同意的脚本

已经有一些解决方案可以帮助您,而不是自己滚动。 Javascript:

这里有一个解决方案,允许在不使用cookies的情况下使用Google Analytics的基本功能,通过跟踪服务器端,这个例子是PHP:

EDIT(2019):下面的答案早于GDPR,可能需要修改。 Google Analytics有一套新的API来帮助遵守cookie选择退出,这是他们的

关于欧盟Cookie法规(在成员国实施)是否要求被动网络分析跟踪需要选择加入机制来遵守,存在一些模糊性。如果你有这样或那样的担心,咨询律师。谷歌授权你决定如何继续

他们会将实施细节留给您,但是,我们的想法是,一旦您确定是否在Google Analytics中跟踪用户,如果答案是“不跟踪”,则在Google Analytics运行之前,您应该将以下属性设置为true:

window['ga-disable-UA-XXXXXX-Y'] = true;
其中UA-XXXXXX-Y是您在Google Analytics中的帐户ID

正如其他海报所指出的,谷歌分析依赖于cookies。因此,如果没有cookies,您将无法进行任何类型的跟踪。如果您已经确定某人不会被烹调用于跟踪,您将需要实现如下内容:

if(doNotCookie()){
   window['ga-disable-UA-XXXXXX-Y'] = true;
}
gtag('consent', 'default', {
  analytics_storage: 'denied',
  ad_storage: 'denied'
});
选择加入 当您首次加载Google Analytics时,这确实需要一点柔术,因为需要在Google Analytics运行之前设置此属性,以防止跟踪发生,这意味着,对于“选择加入跟踪”方法,您可能需要实现一种机制,在第一次访问时,如果没有选择加入cookie(明确允许确定cookie首选项的cookie),Google Analytics将自动禁用,然后,如果选择加入,将重新运行Google Analytics。在随后的页面浏览中,所有操作都将顺利进行

可能看起来像(伪代码):

选择退出 使用这种方法,您将允许用户选择退出跟踪,这意味着您将使用cookie设置
ga-disable-UA-XXXXXX-Y'
属性,并在将来使用cookie管理它:

if( hasOptedOut() ){ // function you've defined elsewhere 
     window['ga-disable-UA-XXXXXX-Y'] = true;
}

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXX-Y']);
  _gaq.push(['_trackPageview']);
简而言之,英国广播公司(可能是英国最受欢迎的网站)采取了一种有趣的方法来遵守cookies——他们向用户展示了一条横幅,告诉他们cookies已设置,并提供了几个链接


这一个让,但最有趣的是,他们提供了一个完整的。总之,BBC认为他们可以告诉用户设置了哪些cookie,然后提供一个到谷歌的链接,允许用户选择退出所有GA cookie。对我来说,这比你告诉GA通过JS选择退出地址要简单得多。

到目前为止,处理这个问题的常用方法是wolf软件的jquery插件使用的方法,它阻止脚本运行,直到用户选择加入。然而,ICO上周更新了他们的指导方针,说依靠BBC网站上使用的那种“默示同意”是可以接受的。虽然我真的认为这不符合法律精神,但执法者认为这是可以接受的。鉴于欧盟大部分国家尚未实施该指令,我认为他们很可能会效仿英国的做法

这里有一篇关于英国更新的有趣文章:


对于一个侵入性较低的用户体验解决方案,您可以通过放置一个链接来设置谷歌分析cookie的默示同意:cookiestatement.eu(无javascript、无弹出窗口、无广告)

很抱歉回答晚,但我最近一直在寻找同样的东西,直到我自己找到了一种方法。这可能不是正确的方法,但它是有效的。(仅涉及现场的工程不会完全退出GA)。 我已经测试了几天,以确保

我设法做到这一点的方法是使用PHP cookie。首先从添加analyticstracking.php开始,包括

<?php include_once('analyticstracking.php'); ?>

在analyticstracking.php中添加以下内容

<?php
if($_COOKIE['consent_cookie']=="Y"){
?>

<script type="text/javascript">
var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-********-*']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript';     ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :      'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];      s.parentNode.insertBefore(ga, s);
  })();
</script>

<?php   
}
else{
//do nothing
}
?>

var _gaq=_gaq | |[];
_推
ga('create', 'UA-XXXXXX-XX', {'storage': 'none'});
ga(function(tracker) {
  var clientId = tracker.get('clientId');
});
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-98765432-1', 'www.example.com', {
  'anonymizeIp': true
  , 'storage': 'none'
  , 'clientId': window.localStorage.getItem('ga_clientId')
});
ga(function(tracker) {
  window.localStorage.setItem('ga_clientId', tracker.get('clientId'));
});
ga('send', 'pageview');
// Create a fake ID instead of storing anything locally
function guidGenerator() {
    var S4 = function() {
       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    };
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}

...
ga('create', 'UA-XXXXXX-Y', {
        'storage': 'none',
        'clientId': guidGenerator()
});
   <script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX-Y"></script>
-- <script>
-- window.dataLayer = window.dataLayer || [];
-- function gtag(){dataLayer.push(arguments);}
-- gtag('js', new Date());
-- gtag('config', 'UA-XXXXXX-Y');
-- </script>
<script src="https://www.npmcdn.com/gtag-opt-in@2.0.0/dist/index.js"></script>
<script>
  GTagOptIn.register('UA-XXXXXX-Y');

  ...
  // On user opt in
  GTagOptIn.optIn();
  // On user opt out
  GTagOptIn.optOut();
  ...
</script>
gtag('consent', 'default', {
  analytics_storage: 'denied',
  ad_storage: 'denied'
});