一、referrer是什么
referrer(来源)是指用户访问网页时,通过HTTP请求头(HTTP header)发送给服务器的一个信息,告诉服务器用户是从哪个页面链接过来的。referrer通常可以用于统计分析、安全控制等方面。 以下是一个典型的HTTP请求头中包含referrer的示例:
GET /test.html HTTP/1.1
Host: www.test.com
Referer: http://www.example.com/index.html
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
二、referrer的用途
1. 统计分析
referrer最常见的用途之一就是统计分析,通过referrer可以知道用户是通过哪些链接进入网站的。例如,可以根据referrer来了解用户来源的渠道、哪些页面的链接更加具有吸引力等信息,从而进行网站优化。 以下是一个基于referrer进行统计分析的示例:
<script>
var referrer = document.referrer; // 获取referrer信息
_hmt.push(['_trackEvent', 'Referrer', referrer, '1']);
</script>
2. 安全控制
referrer还能够用于安全控制。例如,某些网站需要限制访问来源,或者根据referrer来进行防盗链等措施。 以下是基于referrer进行防盗链的示例:
<?php
$referer = $_SERVER['HTTP_REFERER'];
$is_hotlink = preg_match('/^(http:\/\/)(.*?)example.com/', $referer);
if (!$is_hotlink) {
die("Access Denied!");
}
// 正常输出内容
?>
三、referrer的局限性
referrer并不是完美的,它存在一定的局限性,例如:
1. 不稳定性
referrer信息并不是完全可靠的。例如,有些用户可能会使用代理工具隐藏referrer信息,或者浏览器不支持referrer功能等。因此,在使用referrer时,需要对这些不可靠因素进行处理。
2. 隐私问题
referrer信息可能会泄露用户的隐私。例如,当用户从某个敏感网站跳转到其他网站时,referrer信息中可能会包含敏感信息。因此,需要在使用referrer时,注意保护用户的隐私。
3. 用户体验
referrer可能会影响用户的浏览体验。例如,当用户从某个网站跳转到另一个网站时,如果referrer中包含大量的参数,可能会导致网站加载速度变慢、页面失效等问题。 因此,在使用referrer时,需要权衡好它的优缺点,根据实际情况来进行使用。