我的实际实现要复杂得多,包括身份验证和其他一些东西,但以最简单的形式,这就是我遇到的问题。使用 header 重定向不会将其自身显示为引荐来源网址。
假设我有三个页面:start.php、middle.php 和 end.php
开始.php
<html><body>
<a href="middle.php">middle</a>
</body></html>
中间.php
<?php
header('Location: end.php');
?>
结束.php
<?php
echo 'The referer is: ' . $_SERVER['HTTP_REFERER'];
?>
当您点击该链接时,您最终会到达 end.php,但 referer 不是 middle.php。我可以使用任何其他重定向方法来更正此问题,或者我可以做的任何其他事情吗?
干杯
编辑 在这种情况下,目标页面是第三方供应商。他们必须验证的唯一方法是引用 URL。我无法控制那个。我只需要我的页面进行重定向以发送正确的 URL。除了挑出不信任 http_referer 的原因之外,还有其他方法可以替代这种重定向方法吗?
最佳答案
抱歉,这是您无法控制的,只有浏览器可以发送该 header - 并非所有浏览器都可以。它很容易被伪造,所以不要依赖它。
有关此 php bug 的更多信息(这被标记为不是错误)。
关于php - 重定向和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350929/