apache中配置referrer-policy需启用mod_headers模块并用header always set指令设置响应头,推荐值为strict-origin-when-cross-origin,兼顾安全与兼容性,作用于虚拟主机配置内,通过开发者工具或securityheaders.com验证生效。

在Apache中配置Referrer-Policy,核心是启用mod_headers模块,并通过Header set指令设置响应头。它不加密数据,但能有效限制浏览器在跨站请求中泄露来源URL,从而保护用户浏览路径隐私,也间接降低盗链和信息泄露风险。
确认并启用mod_headers模块
该模块默认可能未启用,需手动激活:
- Debian/Ubuntu系统:运行
sudo a2enmod headers,再执行sudo systemctl restart apache2 - RHEL/CentOS系统:确保
LoadModule headers_module modules/mod_headers.so在httpd.conf中未被注释,然后重启服务:sudo systemctl restart httpd - 检查是否生效:执行
apache2ctl -M | grep headers(或httpd -M | grep headers),看到headers_module (shared)即表示已加载
选择合适的Referrer-Policy值
不同取值平衡安全与功能兼容性,常见选项及适用场景:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- no-referrer-when-downgrade(推荐默认):HTTPS→HTTP时不发Referer,其余情况正常发送。兼顾安全性与第三方资源(如CDN、统计脚本)兼容性
-
strict-origin-when-cross-origin(更严格):同源请求发完整Referer;跨源且协议/域名一致时只发源(如
https://a.com→https://b.com发https://a.com);跨源且降级(HTTPS→HTTP)则不发。现代浏览器广泛支持,隐私保护更强 - same-origin:仅同源跳转或资源加载才发Referer,适合内网或完全可控的多子域环境
- 避免使用
unsafe-url,它会暴露完整URL路径,存在明显隐私泄露风险
在配置文件中添加Header指令
推荐将策略写入虚拟主机配置(如/etc/apache2/sites-available/your-site.conf),确保作用范围精准:
<ifmodule mod_headers.c>
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</ifmodule>
说明:
-
always确保对所有响应(包括304、206等非200状态)都生效 - 放在
<virtualhost></virtualhost>块内,比全局httpd.conf更安全,避免影响其他站点 - 若同时使用
Content-Security-Policy,可一并配置,两者协同增强防护
验证配置是否生效
部署后务必实测:
- 用浏览器开发者工具(Network → 任意请求 → Headers → Response Headers)查看是否含
Referrer-Policy: strict-origin-when-cross-origin - 访问一个HTTPS页面,点击跳转到HTTP测试页,检查跳转请求的Referer头是否为空
- 使用在线工具如securityheaders.com扫描,确认该项评分达标










