【问题标题】:Can I track the referrer of a new window link?我可以跟踪新窗口链接的引用者吗?
【发布时间】:2011-10-03 21:51:09
【问题描述】:

案例:

  • 站点 A 包含在新窗口中打开站点 B 的链接。
  • 站点 B 中的脚本正在尝试获取站点 A 的 URL。

我的问题:有什么方法可以跟踪使用target="_blank" 或Javascript window.open() 函数打开的新窗口的引用者

如果是,那么有什么办法可以完全隐藏引荐来源网址?

【问题讨论】:

    标签: javascript html referrer


    【解决方案1】:

    Referrer 位于 HTTP 标头中,因此无论窗口是空白还是新窗口,它都可用。您可以通过以下方式获取 URL:

    console.log(document.referrer);
    

    有些网站使用它来保护其网站免受点击劫持之类的攻击,因此在链接页面中隐藏引荐来源网址是不合适的。允许referrer spoofing 的浏览器被认为是不安全的,并且在被发现时往往会被修补。

    更新

    也许它并不像我想象的那样皱眉。 HTML5 具有 <a> 的属性,可在 HTTP 标头中不发送引荐来源网址:rel = "noreferrer"

    【讨论】:

      【解决方案2】:

      带有 window.open 的 IE 会丢失引用。只需使用 jQuery 或不使用 jQuery 重写它:

      $("<form />").attr("action", "url").attr("target", "_blank").appendTo(document.body).submit();
      

      【讨论】:

      • 有效,但您可能还想明确设置 .attr("method", "GET") 以确保使用 GET 作为动词(而不是 POST)来执行调用。只是我的 2c。
      【解决方案3】:

      如果您可以控制两个页面,请像这样打开窗口:

      var myWindow = window.open('http://my_url', 'title', 'width=500,height=350,top=100,left=100');
      if(!myWindow.opener) myWindow.opener = self;
      

      附注:给窗口一个标题很重要,否则 IE 会自己拉屎。

      在打开的窗口中,您将看到对“opener”的引用:

      alert(opener.window.location);
      

      【讨论】:

        【解决方案4】:

        你检查开瓶器位置了吗?如果我没记错的话,它对我有用。

        【讨论】:

          【解决方案5】:

          最好的办法是:

              var myWindow = window.open('', 'title', 'width=500,height=350,top=100,left=100');
          myWindow.location.href = 'redirect.asp';
          

          希望对你有用

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多