【问题标题】:How does Google pass referrers from HTTPS to HTTP?Google 如何将引荐来源网址从 HTTPS 传递到 HTTP?
【发布时间】:2014-07-22 17:40:03
【问题描述】:

根据 W3C HTTPS 站点不应将引荐来源网址传递给 HTTP 站点:

如果引用页面是使用安全协议传输的,则客户端不应在(非安全)HTTP 请求中包含Referer 标头字段。

Google 是一个 HTTPS 网站,但我仍然在 Google Analytics 中看到我所有 HTTP 网站的推荐人信息。虽然 Google 隐藏了 q= 参数中的关键字,但我仍然可以看到访问者来自 Google。

根据规范,Google 流量应该直接进入 HTTP 网站。我在这里错过了什么?

【问题讨论】:

    标签: https google-analytics referrer


    【解决方案1】:

    从 Google 结果页面到您网站的链接不是简单的链接。如果您仔细观察,您会注意到该链接在实际到达您的站点之前会通过 javascript 和重定向。

    Google 这样做是为了衡量他们最终的自然结果页面的点击率,并传递推荐信息,以便营销人员可以将这些访问归因回 Google 搜索。

    Google 确实会考虑隐私,并且不会传递用户搜索的实际查询。这就是为什么您在 Google 中看不到关键字,而是显示为 (not provided)

    以前,当某些 Google 搜索是通过 HTTP 进行时,Google 过去会传递查询,现在这种情况不再发生,因为现在 100% 的搜索都是通过 HTTPS。

    所以回答你的问题:是的,规范要求浏览器在使用 HTTPS 时不传递引荐,所有浏览器都遵循这一点,但 Google 使用一些自定义 JS 和重定向来传递引荐。

    更新

    在 Google 的情况下,重定向位于 www.google.com/url

    这是该页面上的代码供参考,代码已被修改以澄清:

    <script>
    window.googleJavaScriptRedirect=1
    </script>
    <META name="referrer" content="origin">
    <script>
    var m = {
      navigateTo:function(b,a,d){
        if(b!=a&&b.google){
          if(b.google.r{ 
            b.google.r=0;
            b.location.href=d;
            a.location.replace("about:blank");
          }
        } else {
          a.location.replace(d);
        }
      }
    };
    m.navigateTo(
      window.parent,
      window,
      "http://www.cutestpaw.com/articles/50-cute-puppies-make-your-girlfriend-smile/"
    );
    </script>
    <noscript>
    <META http-equiv="refresh" content="0;URL='http://www.cutestpaw.com/articles/50-cute-puppies-make-your-girlfriend-smile/'">
    </noscript>
    

    您可以看到它包含一个Meta name="referral",用于传递推荐信息。 Origin其实是传递给google.com/url的请求的HTTP参数。

    【讨论】:

    • 我还是不明白。它是如何工作的? HTTPS > JS 重定向 URL 哪个是 HTTP? > HTTP 站点...我仍然看到同样的问题。
    • 有趣!所以我想这不适用于所有 briwsers,因为它的 JS。
    【解决方案2】:

    有 2 种 META 可用于将引用者从 HTTPS 传递到 HTTP。 Google 的 HTTPS 服务器实现:

    <meta name="referrer" content="origin">
    

    谷歌

    <meta name="referrer" content="origin-when-crossorigin">
    

    优管

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 2017-10-10
      • 1970-01-01
      相关资源
      最近更新 更多