了解referrer

发布时间:2023-05-23

一、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时,需要权衡好它的优缺点,根据实际情况来进行使用。