Referrer-Policy 是浏览器端控制 Referer 请求头发送行为的策略,不直接拦截请求,而是通过限制 Referer 信息量(如设为 strict-origin-when-cross-origin)降低来源泄露与伪造风险,需配合服务端 Referer 白名单校验等机制实现有效防盗链。

Referrer-Policy 本身不是直接的防盗链机制,它不拦截请求,而是控制浏览器是否发送、以及如何发送 Referer 头。但它能从源头减少资源被第三方页面嵌入后“暴露来源”的风险,配合其他策略(如 Referer 白名单校验)可提升防盗链整体效果。关键在于选对策略值,并确保 mod_headers 正确启用。
启用 mod_headers 模块
这是所有 Header 配置的前提:
- 运行命令启用模块:sudo a2enmod headers
- 重启服务生效:sudo systemctl restart apache2
- 验证是否加载成功:apache2ctl -M | grep headers 应输出 headers_module (shared)
在站点配置中设置 Referrer-Policy
推荐将策略写入虚拟主机配置(如 /etc/apache2/sites-available/your-site.conf),放在 块内或全局配置中:
<ifmodule mod_headers.c>
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</ifmodule>
该策略在跨域请求时只发送源站域名(不含路径和参数),兼顾安全性与功能性。避免使用 no-referrer(可能影响统计、广告归因)或 unsafe-url(完全暴露路径,不安全)。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
结合防盗链做协同防护
仅设 Referrer-Policy 不足以阻止盗链,需搭配实际访问控制:
- 用
mod_rewrite校验 Referer:检查%{HTTP_REFERER}是否为空或不在白名单域名内,再拒绝图片/CSS/JS 等静态资源请求 - Referrer-Policy 的作用是让盗链页面“拿不到完整 Referer”,使攻击者更难伪造合法来源,也降低你站点 URL 路径泄露的风险
- 例如:用户从恶意站点 A 加载你的图片,若你设为 strict-origin-when-cross-origin,A 页面发来的请求头中 Referer 只会是 https://a.com,而非 https://a.com/page?ref=123,伪造难度上升
验证与调试建议
部署后务必验证响应头是否生效:
- 用浏览器开发者工具 → Network → 刷新页面 → 查看任意资源的 Response Headers,确认含 Referrer-Policy: strict-origin-when-cross-origin
- 用 curl 测试:curl -I https://yoursite.com/image.jpg,观察输出中是否有该头
- 注意:如果站点同时配置了 CSP 的 referrer 指令,它会覆盖 Referrer-Policy;二者不要冲突










