referrer-policy 仅控制出站请求的 referer 发送,不拦截盗链;真正防盗链需靠 mod_rewrite 的 referer 检查规则,配合 mod_headers 设置策略头可提升防护与隐私安全。

不能只靠 Referrer-Policy 实现“精确防盗链”,它本身不拦截请求,只是控制浏览器是否发送 Referer 头。真正起拦截作用的仍是 mod_rewrite 的 Referer 检查规则。但 mod_headers 配合正确的策略,能提升整体防护效果和隐私安全性——关键在于分清职责、协同配置。
明确 Referrer-Policy 的作用边界
Referrer-Policy 是响应头,影响的是你站点**发出的请求**(比如用户点击你页面里的链接跳到其他站,或你的 JS 加载第三方资源时),而不是别人盗用你图片时的入站请求。它不能阻止外部网站 <img src="your.com/logo.png"> 这种行为,但可以降低因 Referer 泄露带来的风险,比如防止敏感路径暴露。
- "no-referrer-when-downgrade":默认推荐,HTTPS 页面跳转到 HTTP 时不发 Referer,兼顾安全与兼容性
-
"strict-origin-when-cross-origin":更严格,跨源仅发送源(如
https://a.com),不带路径和参数,适合高安全要求场景 - 避免用 "no-referrer":虽最隐私,但可能干扰自身统计工具或合法子域调用
搭配 Rewrite 规则做真正拦截
防盗链生效的核心仍是判断入站请求的 %{HTTP_REFERER} 并拒绝非法来源。mod_headers 在这里负责补充策略头,而非替代重写逻辑:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 确保
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com [NC]精确匹配你的主域和 www 子域 - 若需支持多个合法来源(如管理后台、CDN 域名),用
|分隔:!^http://(www\.)?(yourdomain\.com|cdn\.yourdomain\.com|admin\.app\.com) [NC] - 文件后缀匹配建议细化:
\.(jpg|jpeg|png|webp|gif|svg|ico|pdf|mp4|woff2)$,避免漏掉新型资源 - 加
RewriteCond %{HTTP_REFERER} !^$排除直接访问(空 Referer),否则会误杀书签、微信内嵌页等合法场景
在合适位置启用 headers 并设策略
不要只在 <directory></directory> 里设,优先用 <ifmodule mod_headers.c></ifmodule> 全局兜底,再按需细化:
- 在虚拟主机配置(如
/etc/apache2/sites-available/your-site.conf)中添加:
Header always set Referrer-Policy "strict-origin-when-cross-origin"
- 如果只想对静态资源设策略,可嵌套在
<filesmatch></filesmatch>块内 - 重启 Apache 后用浏览器开发者工具 → Network → 查看任意响应头,确认
Referrer-Policy已出现
必须配合的加固项(单靠 headers 不够)
Referrer-Policy 是纵深防御的一环,不是银弹。以下措施缺一不可:
-
启用并正确配置
mod_rewrite:这是防盗链执行层,a2enmod rewrite+RewriteEngine On必须开启 -
设置
X-Frame-Options或Content-Security-Policy:防 iframe 嵌套盗用,例如Header set X-Frame-Options "DENY" - 图片资源尽量走 CDN:在 Cloudflare、阿里云 CDN 等平台开启 Hotlink Protection,把 Referer 过滤卸载到边缘,减轻 Apache 压力
- 不依赖 Referer 做关键权限校验:Referer 可被伪造,登录态、CSRF Token、签名 URL 才是可信机制










