什么是Meta Referrer和Referrer-Policy?

在互联网世界中,Referrer(引荐来源)是HTTP请求头的一部分,它告诉服务器用户是从哪个页面跳转过来的。例如,当你从Google搜索结果点击一个链接时,Google的URL通常会作为Referrer发送给目标网站。

meta name=“referrer”Referrer-Policy则是两种控制Referrer信息发送方式的技术手段。前者是HTML中的元标签,后者是HTTP响应头,两者都可以用来定义浏览器如何处理Referrer信息。

为什么需要控制Referrer信息?

控制Referrer信息的主要目的有两个:隐私保护流量控制

从隐私角度看,Referrer可能包含敏感信息,比如URL中的查询参数。如果不加控制,这些信息可能会被第三方网站收集。

从流量控制角度看,网站管理员可能希望隐藏某些流量来源,或者确保特定页面的Referrer信息被完整传递。

Meta Referrer的用法

在HTML的<head>部分,你可以添加如下元标签来控制Referrer行为:

<meta name=“referrer” content=“no-referrer”>

这里的content属性可以取多个值:

  • no-referrer:完全不发送Referrer信息
  • origin:只发送源站(协议+域名+端口)
  • unsafe-url:发送完整URL(包括路径和查询参数)
  • same-origin:同源时发送完整URL,跨域时不发送

Referrer-Policy的用法

作为HTTP响应头,Referrer-Policy提供了更灵活的控制方式。常见的值包括:

  • no-referrer:与meta标签相同
  • strict-origin-when-cross-origin:跨域时只发送源站,同源时发送完整URL
  • origin-when-cross-origin:跨域时发送源站,同源时发送完整URL
你可以在服务器配置文件中设置这个响应头,例如在Nginx中:

add_header Referrer-Policy “strict-origin-when-cross-origin”;

实际应用场景

以下是几个典型的应用场景:

  1. 隐私保护:当你的网站包含外部链接时,使用no-referrer可以防止用户信息泄露
  2. SEO优化:某些情况下,控制Referrer可以避免流量被错误归因
  3. 安全考虑:防止URL中的敏感信息通过Referrer泄露

浏览器兼容性

大多数现代浏览器都支持Referrer-Policy,包括Chrome、Firefox、Edge和Safari。对于meta标签的支持也相当广泛,但某些旧版本浏览器可能存在兼容性问题。

建议在使用前查看Can I Use上的兼容性表格。

最佳实践

根据我们的经验,以下是最佳实践建议:

  • 对于一般网站,推荐使用strict-origin-when-cross-origin政策
  • 对于隐私敏感页面,可以考虑no-referrer
  • 在HTML和HTTP头中设置相同的政策以确保一致性
  • 测试不同场景下的Referrer行为