2

我有一个 PHP 脚本,它通过以下代码重定向用户:

header ('Location: http://someurl/somepage.php');

然后在 somepage.php 我试图访问$_SERVER['HTTP_REFERER']以确定页面请求的来源。$_SERVER['HTTP_REFERER']当使用标题位置方法调用页面时,我发现它是空的。

是否有另一种方法可以用来重定向用户,以便我仍然可以$_SERVER['HTTP_REFERER']在目标页面中使用。

4

2 回答 2

6

您可以尝试的一件事:不发送Location标头,而是发回带有标签的 HTML 页面

<meta http-equiv="refresh" content="0;url=http://someurl/somepage.php">

<head>节中。不过,我不确定它是否能解决您的问题……这实际上取决于浏览器的行为方式。的值$_SERVER['HTTP_REFERER']来自Referer浏览器可以自由发送或不发送的请求标头,由浏览器自行决定。

你可以做的其他事情是

header("Location: http://someurl/somepage.php?referer=http%3A%2F%2Fthisurl%2Fthispage.php");

即,将引用 URL 作为查询字符串参数发送,然后您可以将其作为$_GET['referer']. 这可能比依靠浏览器发送引用标头更可靠。

于 2009-03-27T04:54:57.043 回答
1

HTTP Referer: 标头由用户代理设置,而不是由服务器设置。我不确定您是否可以采取任何措施来确保获得Referer 标头。

于 2009-03-27T04:59:56.033 回答