如何使用PHP避免转发Referrer值?
问题场景与解决方案
场景还原
Example.com/redirect.php代码:header("Location: https://stackoverflow.com");Test.com包含链接:<a href="https://www.example.com/redirect.php">Test Click</a>
跳转流程:
Test.com(点击链接)→ Example.com/redirect.php → https://stackoverflow.com
当前问题:Stackoverflow.com获取到的Referrer是test.com,而非上一级的example.com,需要让目标站仅获取跳转前的example.com作为Referrer。
解决方案
修改Example.com/redirect.php的PHP代码,添加Referrer-Policy响应头控制Referrer传递逻辑:
// 设置Referrer仅传递当前域名源信息 header("Referrer-Policy: origin"); // 执行301跳转 header("Location: https://stackoverflow.com", true, 301);
策略说明
origin:浏览器会将当前页面的「协议+域名+端口」(即example.com)作为Referrer传递给目标站,丢弃之前的test.com来源信息。- 若需更严格的安全控制,可选择
strict-origin策略(仅当跳转前后协议安全级别一致时,才传递源信息),但origin已满足核心需求。
原理
浏览器默认在3xx跳转时会保留最初的Referrer(即test.com),通过在跳转页面设置Referrer-Policy,可以强制浏览器在跳转到下一站时,仅使用当前页面的源信息作为Referrer。
内容的提问来源于stack exchange,提问作者Mehul Kumar
相关产品推荐
相关产品推荐

