如果您使用javascript location.href = <url>
将用户重定向到新网页,目标网络服务器会看到哪些REFERER标头?
答案 0 :(得分:8)
除了一些例外情况,发送的标头是包含重定向的页面,而不是执行重定向的页面的引用者。这与服务器端重定向形成对比,服务器端重定向保留了原始引用者。
因此,如果访问者从A.html
转到B.html
,而B.html
触发location.href
重定向到C.html
,则网络服务器会看到{{ 1}}作为推荐人。 (如果您在服务器端从B.html
重定向到B.html
,则C.html
将成为A.html
的推荐人。)
较旧版本的Internet Explorer会发送一个空白标题,并且(一如既往)将重定向从HTTPS重定向到HTTP。
答案 1 :(得分:2)
它会看到它来自的页面,就像点击链接一样。
要从任何页面测试此内容,请重定向到phpinfo()页面或任何其他回显标题的页面,例如:
window.location='http://hosting.iptcom.net/phpinfo.php';
(从随机谷歌搜索中提取的页面)
答案 2 :(得分:2)
大多数浏览器会使用location.href传递HTTP_REFFERER,但在某些情况下IE不会。
如果参与者对你很重要,那么你可以这样做:
function goTo(url) {
var a = document.createElement("a");
if(!a.click) { //Only IE has .click so if it doesnt exist use the simple method where the refferer is passed on other browsers.
location.href = url;
return;
}
a.setAttribute("href", url);
a.style.display = "none";
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(a);
a.click();
}