【问题标题】:JavaScript Redirect: Problem with Referer HeaderJavaScript 重定向:Referer 标头问题
【发布时间】:2011-05-08 11:49:01
【问题描述】:

有人通过博客链接(比如http://blog)来到我的网站(比如http://mysite/a.php)。

所以现在她在页面http://mysite/a.php 上,并且referer 设置为http://blog

现在页面 http://mysite/a.php 上有 JavaScript,它执行以下重定向:

document.location = "http://mysite/b.php; //这是在任何 Google Analytics 脚本之前执行的。

现在在对http://mysite/b.php的请求中,referer设置为http://mysite/a.php
因此(我认为是这样)我的 Google Analytics(分析)显示了来自 http://mysite/a.php 的所有流量。

请提出解决方案。
注意:JavaScript 重定向很关键,无法摆脱它。
我也尝试从服务器发送 302 代码,但没有成功。

【问题讨论】:

  • Google Analytics 之后重定向怎么样?
  • 是的。我想过这个问题。但想避免这种情况,因为如果 GA 需要时间,这会延迟重定向。
  • Varun,是否有任何一个答案有助于澄清您的问题?

标签: javascript redirect google-analytics http-referer


【解决方案1】:

编辑:新的推荐方式

Google Analytics 现在有一个特殊的 URL 参数 utm_referrer,您可以在其中将引荐来源网址传递给您要重定向到的页面;这样做将模拟与以下相同的行为,而无需弄乱 cookie 或函数。

在你的例子中,你会让你的代码说:

 document.location = "http://mysite/b.php?utm_referrer=" + encodeURIComponent(location.href); ;

旧的、更难但实用的方法

Google Analytics 有一个名为setRefererOverride() 的函数。如果您设置它,它将覆盖它跟踪到您设置的任何值的引荐来源网址值。

best way to do this 用于在重定向之前将真正的引荐来源网址存储在 cookie 中,如下所示:

document.cookie = "realreferrer="+encodeURIComponent(document.referrer)+"; path=/";

然后,读取页面上的 cookie 值。如果设置了 cookie,请在浏览量之前调用该函数。

var realreferrer = readCookie("realreferrer"); //using a readCookie function of some kind
if (realreferrer) {
 _gaq.push(['_setReferrerOverride', realreferrer ]);
            //if using the old code, use pageTracker._setReferrerOverride(realreferrer);
}

【讨论】:

    【解决方案2】:

    我认为最干净(也许是唯一)的方法是在进行重定向之前在a.php 中触发 GA 计数。

    如果这不是一个选项,我能看到保持引荐来源的唯一方法是

    document.location = "http://mysite/b.php?referrer="+
                        encodeURIComponent(document.referrer);
    

    (将not work in IE under some circumstances

    但这仍然不会告诉 GA 相应地设置引荐来源 - 您必须在计数时将其强制用于 Google Analytics。不知道有没有可能。

    【讨论】:

    • 关于第一个选项:如果 GA 需要时间,这将延迟重定向。虽然不确定第二个选项。会检查
    • @Varun 我明白你的意思,但我很确定第一个选项是唯一真正好的选项。
    • 这有两个问题,但可以(大部分)修复。 1. GA 没有回调,因此无法确定您应该等待多长时间来跟踪综合浏览量。你猜得太短了,你错过了交通。你猜得太长了,你让用户感到沮丧。 2。您将通过将引用者添加到 URL 中来污染 URL,因此您需要确保通过过滤器将其删除。但是,如果 OP 确实选择这样做,他可以使用 setReferrerOverride 让它工作。
    猜你喜欢
    • 2012-12-21
    • 2011-04-15
    • 2014-03-08
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2018-03-15
    相关资源
    最近更新 更多