Referer 告诉服务端从哪来
Referer 记录这次请求是从哪个页面发起的,最常见的用途是防盗链、来源统计与风控画像。规范里的拼写确实少了一个 r,这是早期标准留下的历史笔误,被一直沿用至今。发送多少内容由页面的 Referrer-Policy 决定,从完整 URL 到完全不发送都有对应取值;HTTPS 页面引用 HTTP 资源时,出于降级保护默认不发送。
基本信息
| 请求头名 | Referer(注意规范里就是这个拼写) |
|---|---|
| 作用 | 标识来源页面,用于防盗链、来源统计与风控 |
| 规范 | RFC 9110 第 10.1.3 节 |
| 发送粒度 | 由页面响应头 Referrer-Policy 控制 |
| 默认行为 | 现代浏览器默认近似 strict-origin-when-cross-origin |
| 降级保护 | HTTPS 页面引用 HTTP 资源时默认不发送 Referer |
防盗链与查看来源
防盗链与查看来源
curl -si -H 'Referer: https://www.example.com/page' https://static.example.com/a.jpg | head -3 # 带来源请求
curl -sI https://www.example.com/ | grep -i referrer-policy # 查看站点声明的策略
# nginx 简单防盗链:只允许本站与白名单来源引用静态资源
# location ~* \.(jpg|png|mp4)$ {
# valid_referers none blocked server_names *.example.com;
# if ($invalid_referer) { return 403; }
# }典型使用场景
- 图片与视频防盗链:只允许本站页面引用媒体资源,减少被盗用产生的流量成本
- 来源统计:分析站外流量来自哪些站点与页面
- 风控联动:识别异常来源与批量脚本,作为判断特征的其中一维
- 跳转归因:在落地页判断用户从哪个渠道进入
- 内容合规:确认嵌入页面是否来自授权的合作方
Referrer-Policy 取值
| 取值 | 发送内容 | 适用场景 |
|---|---|---|
| no-referrer | 完全不发送来源 | 不需要来源统计的敏感页面 |
| same-origin | 同源发完整 URL,跨源不发送 | 站内流程页 |
| strict-origin | 只发源(协议加域名加端口),降级时不发 | 不需要路径信息的统计 |
| strict-origin-when-cross-origin | 同源发完整 URL,跨源只发源,降级不发 | 现代浏览器默认值,通用推荐 |
| unsafe-url | 任何情况都发完整 URL,含路径与查询串 | 有敏感参数泄漏风险,不建议使用 |
URL 里带的查询参数会随 Referer 一起发送给第三方域,包含令牌或者邮箱之类的参数会直接泄漏。跨域场景应显式设置 Referrer-Policy,不要依赖浏览器默认值。