XAMPP默认不监听多端口且不发送Referrer-Policy响应头,需先在httpd.conf中添加Listen指令启用端口(如Listen 8080、Listen 8081),再于httpd-vhosts.conf中为各端口配置独立VirtualHost块并启用mod_headers模块,最后在对应内用Header always set设置安全头。

XAMPP 默认不监听多端口,也不发送 Referrer-Policy 响应头——这两件事必须手动开启,且顺序不能错:先让 Apache 能正确响应多个端口,再在对应站点上下文里加安全头。
修改 httpd.conf 启用多端口监听
Apache 不会自动监听你“想用”的端口,只听 Listen 指令明确列出的。仅改 httpd-vhosts.conf 里的 *:8080 是无效的。
- 打开
C:\XAMPP\apache\conf\httpd.conf(路径按你实际安装位置调整) - 找到
Listen 80行,在它下面新增你要的端口,例如:Listen 8080Listen 8081 - 确认
ServerName行没写错端口,比如ServerName localhost:8080会导致 Apache 启动失败——它只应在虚拟主机块内指定端口,主配置里保持localhost或留空 - 保存后重启 Apache;若启动失败,看控制台报错是否含
Address already in use,说明端口被占用(常见于 Skype、IIS、Windows 更新服务)
在 httpd-vhosts.conf 中为每个端口配独立 VirtualHost
每个端口要对应一个 <virtualhost></virtualhost> 块,不能共用同一块配置。否则请求会落到第一个匹配的虚拟主机,或直接 403/404。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 确保
C:\XAMPP\apache\conf\httpd.conf中这行已取消注释:Include conf/extra/httpd-vhosts.conf - 在
C:\XAMPP\apache\conf\extra\httpd-vhosts.conf底部添加类似如下结构(注意路径无尾斜杠、AllowOverride All已启用):<VirtualHost *:8080><br> ServerName localhost<br> DocumentRoot "C:/xampp/htdocs/project-a"<br> <Directory "C:/xampp/htdocs/project-a"><br> AllowOverride All<br> Require all granted<br> </Directory><br></VirtualHost>
- 若访问时出现 403,检查
httpd.conf中全局<directory></directory>块是否仍为Require all denied;XAMPP 旧版本默认如此,需显式放开
为每个站点单独启用 Referrer-Policy 响应头
Apache 不像 Nginx 那样支持在 VirtualHost 级直接写 add_header。必须加载 mod_headers 模块,并用 Header 指令配合 Location 或目录上下文生效。
- 确认
httpd.conf中这行未被注释:LoadModule headers_module modules/mod_headers.so - 在对应
<virtualhost></virtualhost>块内添加:<Location "/"><br> Header always set Referrer-Policy "strict-origin-when-cross-origin"<br></Location>
- 不要写成
Header set(不带always),否则对 304、错误页等响应不生效 - 策略值选
strict-origin-when-cross-origin是当前最平衡的选择:同源完全传 referrer,跨源只传 origin,既保功能又控泄露;避免用no-referrer(破坏分析)、unsafe-url(高风险)
验证是否生效及容易忽略的点
改完不重启 = 白改;重启后不验证 = 不知道有没有真生效。
- 用浏览器开发者工具的 Network 标签页,刷新任意页面,点任一请求 → 查看 Response Headers → 找
Referrer-Policy字段 - 用命令行快速验证:
curl -I http://localhost:8080/,看输出中是否有该 header - 常见漏点:
–mod_headers没启用,header 就不会发
–AllowOverride All只设在虚拟主机里,但项目根目录下有 .htaccess 且用了 rewrite,此时需确保该 .htaccess 文件本身也允许 header 操作(Apache 2.4+ 默认不允许,需额外加Header权限到AllowOverride列表)
– 多端口共用同一 DocumentRoot 时,Referrer-Policy会统一应用,无法按端口差异化设置——如需差异化,必须分目录或用不同VirtualHost

















