【问题标题】:Firefox private browsing requires 2 page loads to set cookiesFirefox 隐私浏览需要 2 次页面加载才能设置 cookie
【发布时间】:2019-04-19 22:16:38
【问题描述】:

我的 WordPress 网站 (http://robfuquay.staging.wpengine.com/) 设置为仅在用户通过附加在窗口底部的横幅同意后才允许 Google Analytics cookie。 (这是通过这个插件完成的:https://wordpress.org/plugins/cookie-notice/

在获得同意之前,我有一个名为 ga-disable-UA-10877870-45 的 cookie,它被设置为 true。单击同意按钮时,会添加另一个 cookie cookie_notice_accepted 并设置为 true。一旦cookie_notice_accepted cookie 设置为truega-disable-UA-10877870-45 cookie 通过以下函数设置为false

add_action( 'init', 'set_ga_disable_cookie_according_to_cookie_notice' );

function set_ga_disable_cookie_according_to_cookie_notice() {
  if ( function_exists( 'cn_cookies_accepted' ) && function_exists('get_ua')) {
    if ( cn_cookies_accepted() ) {
      setcookie( 'ga-disable-'.get_ua(), 'false', 0, "/" );
    } else {
      if(!isset($_COOKIE['ga-disable-'.get_ua()])) {
        setCookie( 'ga-disable-'.get_ua(), 'true' );
      }
    }
  }
}

一旦ga-disable-UA-10877870-45 设置为false,在下一页加载Google Analytics cookie 设置:_ga_gatgid。 (点击同意按钮后,页面会通过 Cookie Notice 插件设置自动重新加载。)

我遇到的问题是关于客户的。 Chrome、Safari 和 Opera(以及它们所有的私人浏览器)都按预期工作:接受通知、页面重新加载、Google Analytics cookie 已设置。 Firefox 也可以按预期工作,但是 Firefox 隐私浏览不会设置 Google Analytics cookie,直到有额外的页面请求。这意味着即使在页面自动重新加载后,我也必须再次刷新页面。这在我的两台 MacBook 之间是一致的。

我允许 cookie,但我没有阻止跟踪,那么为什么 Firefox 隐私浏览会这样呢?

【问题讨论】:

  • 根据this page:“在私人窗口中设置的cookies暂时保存在内存中,与常规窗口cookies分开,并在你的私人会话结束时被丢弃”

标签: php wordpress firefox cookies google-analytics


【解决方案1】:

@Jamie_D 在识别问题时是正确的:

根据此页面:“在私有窗口中设置的 Cookie 会暂时保存在内存中,与常规窗口 cookie 分开,并在您的私有会话结束时丢弃”

由于开发工具中没有显示 cookie,解决方案是在控制台中输入以下 JavaScript:

unescape(document.cookie.split('; '));

来源:https://support.mozilla.org/en-US/questions/1031619#answer-672435

返回的预期 cookie 包括 _ga_gat_gid

我仔细检查了 Google Analytics 是否提取了正确的实时数据,并且一切看起来都不错。

所以要明确一点,Firefox 隐私浏览不需要加载 2 个页面来设置 cookie...Firefox 只是没有显示它们是在开发工具中设置的。

【讨论】:

  • 这个答案中的代码似乎不再有效,至少对我在 OSX 上使用 Firefox 64.0.2 而言,因为document.cookie 返回一个空字符串。 Cookie 仍然保存在内存中,只是检查起来有点困难
  • 从头开始,我得到的是空字符串,因为有问题的 cookie 是 HttpOnly,这意味着无法从 JS 访问
猜你喜欢
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 2019-01-15
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多