【问题标题】:Not able to capture correct referrer using javascript document.referrer无法使用 javascript document.referrer 捕获正确的引荐来源网址
【发布时间】:2013-09-06 04:42:07
【问题描述】:

我们正在尝试使用 javascript 代码 document.referrer 捕获引荐来源网址。但在某些情况下,我们会得到错误的输出。

在我的例子中,打开 Google.de,然后搜索“zalando”,然后点击付费搜索广告。当我登陆页面时,它实际上应该显示“Google.de”作为引荐来源网址,但它显示给我们的是“zalando.de”。请查找随附的屏幕截图以供参考。

希望这与网站有关。但我有点好奇,想知道以下几点:

  1. 为什么 document.referrer 在我的情况下不起作用?
  2. 网站所有者使用哪些技术来更改引荐来源网址?
  3. 在上述情况下,有没有办法使用 javascript 获取正确的引荐来源网址?

我们将不胜感激:)

【问题讨论】:

    标签: javascript web analytics web-analytics


    【解决方案1】:

    Google 的问题在于,它是受 SSL 保护的 (HTTPS)。

    通过从安全主机更改为非安全主机来删除引用者。

    Google 将几乎所有用户的加密更改为默认 SSL(不包括亚洲某些不允许加密的国家/地区,...)。这个问题也出现在许多网络统计和谷歌搜索中,谷歌搜索“WordPress 中的encrypted_search_terms” - 许多人遇到无法访问引用者的问题 - 仅仅是因为它在 HTTP 请求期间被删除。

    如果从 HTTP 安全 (HTTPS) 连接和 链接指向除另一个安全位置以外的任何地方,然后 未发送referer字段。

    即将到来的标准 HTML5 将支持属性/值 rel = “noreferrer”,以指示用户代理不要发送 推荐人。

    来源:http://en.wikipedia.org/wiki/HTTP_referer#References

    更新:

    请求网址:http://www.zalando.de/mbox-de-home/?wt_ga41=5671686226_28149528346&wt_gk41=Exact_5671686226_zalando&gclid=CKTOt4eZvrkCFUHHtAodDDAAKw

    推荐人:http://www.google.de/aclk?sa=l&ai=Cpa3Esq4tUvv-G4e9-Qap_YH4AvKmg_ID8tzul2md6c2tKAgAEAFQwa_i7v7_____AWCVspWCpAegAZ67pcQDyAEBqQJzLk9s6Bu2PqoEIk_QWWoJkHHqxkgWDNaWPV1Nuz1wbu1k-cSPx7tybvJDfR6AB8rE2js&sig=AOD64_3X48XkFIMsdt0_6nyr60yxwlqYKQ&ved=0CDEQ0Qw&adurl=http://www.zalando.de/mbox-de-home/%3Fwt_ga41%3D5671686226_28149528346%26wt_gk41%3DExact_5671686226_zalando&rct=j&q=zalando

    实际上,referer 被发送,并且没有安全连接。

    现在的问题是,从谷歌搜索到商店网站,您有一系列不同的页面和请求。您在错误的位置捕获了引用者。

    Google 搜索 -> Google 广告重定向 1 -> Google 广告重定向 2 ... -> Zalando 登录页面 -> zalando 网站

    必须在离开谷歌网站后的第一个请求中捕获引荐来源网址。实际上,您在该链的末尾捕获了引用者。

    是您的着陆页:

    http://www.zalando.de/mbox-de-home/?wt_ga41=5671686226_22217536906& wt_gk41=Exact_5671686226_zalando&gclid=CL7JlvibvrkCFeXMtAodS3oALw

    这就是您必须捕获引荐来源网址的地方(可能使用您的服务器端语言,而不是使用 Javascript)。

    【讨论】:

    • @Dan.. 感谢您的精彩解释。我想知道有没有办法从客户端获取推荐人。因为我们正在开发一个实用程序(使用 JavaScript 开发)来检查用户从哪里登陆到客户端页面。
    • @Unknown 您可以将带有 document.referrer 的 Javascript 包含在此处的站点中:http://www.zalando.de/mbox-de-home/(来自 ads.google.com),但不能在 http://www.zalando.de 中(来自 zalando.de/mbox-de-home
    【解决方案2】:

    它工作正常,但从付费搜索广告到网站的 302 重定向。如果您打开 Chrome 开发人员并在访问该站点时查看网络选项卡,则可以看到此重定向发生。或者使用 Chrome 插件重定向路径 - https://chrome.google.com/webstore/detail/redirect-path/aomidfkchockcldhbkggjokdkkebmdll

    我不确定您为什么要使用 js 更改引荐来源网址。您正在使用 Google Analytics,为什么不直接查看推荐人报告?

    【讨论】:

    • 感谢您的回复。但是您能否解释一下 302 重定向如何影响引荐来源网址。如果您查看其他付费广告,您将获得推荐人。但在上述情况下,我们不是。为什么?顺便说一句,我没有使用谷歌分析,我们不应该这样做。
    • 我刚刚检查了一些其他广告,它向我显示了与您遇到的相同问题。例如,当您运行 document.referrer时,它会返回链接到该页面的页面的 URI。在您的情况下,路径类似于 google.com (ad) > rei.com/?gclid=CMvomLLCuLkCFY9xQgodXxoA- > rei.com/?gclid=CMvomLLCuLkCFY9xQgodXxoA-。因此,当您在着陆页上运行 document.referrer 时,您实际上并没有获得 google 搜索,而是获得了 302 重定向链接。
    • @Blexy .. 感谢您的解释。那么有什么方法可以使用 javascript 获得实际的推荐人吗?
    • 我不相信你可以。理论上,您必须将查询参数附加到您在谷歌上点击的广告,我认为这是不可能的。只是好奇,你到底想做什么?
    • 我们有一个小工具可以检查用户从哪里登陆到客户端网页。到目前为止它工作正常。但在上述情况下,它失败了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多