Referrer-Policy本身不直接防盗链,但通过限制Referer头发送(如设为no-referrer-when-downgrade),可降低静默引用风险;需配合mod_headers启用及Rewrite规则(如拦截非本域Referer的图片请求)才能实现有效防盗链。

Referrer-Policy 本身不直接实现防盗链,但它能限制 Referer 头的发送行为,从而降低资源被第三方网站“静默引用”的风险,配合 Rewrite 规则可提升防盗链策略的鲁棒性。关键在于选对策略值,并确保 mod_headers 正确启用。
确认并启用 mod_headers 模块
Apache 默认可能未启用该模块。执行以下命令启用:
- sudo a2enmod headers
- sudo systemctl restart apache2
重启后可通过 apache2ctl -M | grep headers 验证是否已加载。
在合适位置添加 Referrer-Policy 响应头
推荐在虚拟主机配置(如 /etc/apache2/sites-available/yourdomain.com.conf)或站点目录的 .htaccess 中添加,需包裹在
<IfModule mod_headers.c><br> Header always set Referrer-Policy "no-referrer-when-downgrade"<br></IfModule>
注意:Header always set 确保所有响应(含 404、301 等)都携带该头,避免遗漏;no-referrer-when-downgrade 是兼顾兼容性与安全性的常用选择——HTTPS 页面跳转到 HTTP 时不发 Referer,同协议跳转则正常发送,利于内部统计和部分 CDN 回源识别。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
Referrer-Policy 与 Rewrite 防盗链协同使用
单独设 Referrer-Policy 不会阻止外部请求,必须搭配 Rewrite 规则才能真正拦截。例如:
RewriteEngine On<br>RewriteCond %{HTTP_REFERER} !^$<br>RewriteCond %{HTTP_REFERER} !yourdomain\.com [NC]<br>RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F]此时,若攻击者网站因 Referrer-Policy 设置为 same-origin 或 strict-origin-when-cross-origin 而未发送 Referer,其请求将因不满足 RewriteCond 而绕过拦截。因此建议:
- 优先用 no-referrer-when-downgrade 或 strict-origin-when-cross-origin,保证合法外链(如微信、邮件客户端)仍能带有效 Referer 供 Rewrite 判断
- 不要依赖 Referer 做唯一验证,敏感资源建议结合 Token 验证或登录态校验
验证是否生效
部署后访问页面,用浏览器开发者工具(Network → Headers)查看响应头中是否有:
Referrer-Policy: no-referrer-when-downgrade
也可用 curl 快速检查:curl -I https://yourdomain.com/image.jpg,确认返回头包含该字段且值正确。

















