我有一个域,假设我要重定向到www.whatismyreferer.com来检查引荐来源网址www.domain.com。当我使用PHP标头重定向页面时,它显示No Referr /隐藏在结果中。我想在whatismyrefer.com上将引荐网址设置为www.domain.com
<?php
header("Referrer-Policy: origin");
header("Location: https://www.whatismyreferer.com",true, 302);
?>
我也尝试了Referrer-policy:unsafe-url,但仍然没有referrer
<meta name="referrer" content="origin">
<meta http-equiv="refresh" content="0;https://www.whatismyreferer.com">
然后显示引荐来源。我不想使用meta标记,我想使用标头位置
答案 0 :(得分:1)
我认为问题可能在于您如何测试它。 3xx重定向保留了原始的Referer
-浏览器不会在重定向本身上设置 new Referer
。因此,如果您直接在您的网站上请求.index.php
(无引用者),那么重定向的请求中也将没有引用者。
元刷新不是3xx HTTP重定向,其行为就像您遵循常规锚点/链接一样,因此浏览器会生成Referer
。
相反,您需要测试链接到test-referer.html
的辅助文件(例如index.php
),以便在测试重定向/ {{1}之前生成Referer
}标头。
Referrer-Policy
更新:
通过这种方式测试后,<!-- test-referer.html -->
<a href="/index.php">index.php</a>
标头对我来说是正确的。
我想在whatismyrefer.com上将引荐网址设置为www.domain.com
在这种情况下,您不能简单地使用3xx HTTP重定向(没有初始引用程序),因为3xx重定向本身不会生成引用程序(如上所述)。如果3xx重定向生成了Referrer-Policy
,则由于规范的重定向等原因,站点将始终存在引荐来源网址丢失的问题。
您将需要使用元刷新(如您建议的那样)或使用JavaScript“重定向”(未经测试)。或者,如果您的意图是简单地“伪造” Referer
,则可以使用CURL-尽管这不会直接导致重定向。