我可以跟踪新窗口链接的引用者吗?
Posted
技术标签:
【中文标题】我可以跟踪新窗口链接的引用者吗?【英文标题】: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()
函数打开的新窗口的引用者?
如果是,那么有什么办法可以完全隐藏引荐来源网址?
【问题讨论】:
【参考方案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';
希望对你有用
【讨论】:
以上是关于我可以跟踪新窗口链接的引用者吗?的主要内容,如果未能解决你的问题,请参考以下文章