【发布时间】:2011-10-03 21:51:09
【问题描述】:
案例:
- 站点 A 包含在新窗口中打开站点 B 的链接。
- 站点 B 中的脚本正在尝试获取站点 A 的 URL。
我的问题:有什么方法可以跟踪使用target="_blank" 或Javascript window.open() 函数打开的新窗口的引用者?
如果是,那么有什么办法可以完全隐藏引荐来源网址?
【问题讨论】:
标签: javascript html referrer
案例:
我的问题:有什么方法可以跟踪使用target="_blank" 或Javascript window.open() 函数打开的新窗口的引用者?
如果是,那么有什么办法可以完全隐藏引荐来源网址?
【问题讨论】:
标签: javascript html referrer
Referrer 位于 HTTP 标头中,因此无论窗口是空白还是新窗口,它都可用。您可以通过以下方式获取 URL:
console.log(document.referrer);
有些网站使用它来保护其网站免受点击劫持之类的攻击,因此在链接页面中隐藏引荐来源网址是不合适的。允许referrer spoofing 的浏览器被认为是不安全的,并且在被发现时往往会被修补。
也许它并不像我想象的那样皱眉。 HTML5 具有 <a> 的属性,可在 HTTP 标头中不发送引荐来源网址:rel = "noreferrer"。
【讨论】:
带有 window.open 的 IE 会丢失引用。只需使用 jQuery 或不使用 jQuery 重写它:
$("<form />").attr("action", "url").attr("target", "_blank").appendTo(document.body).submit();
【讨论】:
如果您可以控制两个页面,请像这样打开窗口:
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);
【讨论】:
你检查开瓶器位置了吗?如果我没记错的话,它对我有用。
【讨论】:
最好的办法是:
var myWindow = window.open('', 'title', 'width=500,height=350,top=100,left=100');
myWindow.location.href = 'redirect.asp';
希望对你有用
【讨论】: