1

我有一个域,可以说www.example.com我要重定向到哪个域www.whatismyreferer.com以检查引用者。当我使用 PHP 标头重定向页面时,它显示 No referer / hidden 在结果中。我想将 referer 设置为www.example.comon whatismyrefer.com

这是我在index.php文件中的代码www.example.com

<?php

header("Referrer-Policy: origin");
header("Location: https://www.whatismyreferer.com",true, 302);
?>

我也尝试过referrer-policy: unsafe-url,但仍然没有推荐人

但如果我使用:

<meta name="referrer" content="origin">
<meta http-equiv="refresh" content="0;https://www.whatismyreferer.com">

然后它显示推荐人。我不想用元标记来做,我想用 header 来做location

4

1 回答 1

2

我认为问题可能在于您如何测试它。3xx 重定向保留原始Referer- 浏览器不会在重定向本身上设置新的。 Referer因此,如果您直接index.php在您的网站上请求(没有引荐来源网址),那么重定向请求中也没有引荐来源网址。

元刷新不是 3xx HTTP 重定向,其行为就像您正在关注常规锚点/链接,因此浏览器会生成一个Referer.

相反,您需要使用test-referer.html链接到的辅助文件(例如 )进行测试index.php,以便Referer在测试您的 redirect/Referrer-Policy标头之前生成一个。

<!-- test-referer.html -->
<a href="/index.php">index.php</a>

更新:

以这种Referrer-Policy方式测试时,标题对我来说可以正常工作。

我想在 whatismyrefer.com 上将引用者设置为www.domain.com

在这种情况下,您不能简单地使用 3xx HTTP 重定向(没有初始引荐来源网址),因为 3xx 重定向本身不会生成引荐来源网址(如上所述)。如果 3xx 重定向生成了一个,Referer那么由于规范重定向等原因,网站将一直存在丢失引荐来源的问题。

您将需要使用元刷新(如您所建议的)或者可能是 JavaScript“重定向”(未经测试)。Referer或者,如果您的意图只是“伪造” - 尽管这不会直接导致重定向,您也许可以使用 CURL 。

于 2019-06-13T14:59:46.510 回答