当我在我的共享主机(linux)上执行脚本时,它完全传递了HTTP_REFFERER,但是当我在运行Letsencrypt的专用ubuntu盒子上运行脚本时,HTTP_REFFERER的字段为空。
这是 traker.php
$referer = $_SERVER['HTTP_REFERER'];
$agent = $_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER['REMOTE_ADDR'];
$redirect = $_GET['page'];
function logger($file, $line) {
$fh = fopen($file, 'a');
fwrite($fh, $line."\n");
fclose($fh);
}
logger("clicks.txt", "Rec");
logger("clicks.txt", date("H:i:s d.m.Y")." - [".$_SERVER['REMOTE_ADDR']."] - ".$_SERVER['HTTP_USER_AGENT']." - [".$_SERVER['HTTP_REFERER']."] - ");
header("Location: $redirect");
?>
这是 redirect_to_destination.php ,它在标题中被隐藏,并以body onLoad="va();"
执行
function va() {
window.location.href='http://example.com/traker.php?page=http://example.com/end_destination.php?subid=<?php echo $_SERVER["QUERY_STRING"]; ?>';
}
最后一个脚本 end_destination.php 执行以下操作:
window.location.href='http://affiliate_link.com/?a=756547&c=8786&s1=<?php echo $_GET["subid"]; ?>';
最终链接链接为http://example.com/redirect_to_destination?test_subid
共享主机文件的输出是:
17:03:33 07.01.2017 - [01.001.01.001 (example ip)] - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0 - [http://example.com/redirect_to_destination.php?test]
使用letsencrypt签名在专用ubuntu框上运行的文件输出:
00:43:30 08.01.2017 - [01.001.01.001 (example ip)] - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) Gecko/20100101 Firefox/50.0 - [] -
有什么想法吗?
由于
答案 0 :(得分:0)
https://smerity.com/articles/2013/where_did_all_the_http_referrers_go.html
HTTPS关闭HTTP网站的HTTP Referrers。为什么?根据RFC 2616(HTTP 1.1),这是由于敏感信息可能在引用URL中编码:
如果使用安全协议传输引用页面,则客户端不应在(非安全)HTTP请求中包含Referer头字段。
部分(不完全支持)解决方案:
<meta name="referrer" content="always">
我怀疑可以为您的重定向发送标题(因为它不会包含元标记的HTML),但我并不知道确切的实现。