Отсутствует информация HTTP Referrer в IE / FF (хорошо работает в Chrome / Safari)

я имею page1.php с этим кодом:

<form action="/redirect.php" method="POST" target="_blank">
<input name="destination" type="hidden" value="a"/>
<input type="submit" value="Click here"></form>

а это redirect.php:

<?php

$url = "http://www.default.com";

if(isset($_POST['destination'])){

switch ($_POST['destination']) {

case "a":
$url = "http://www.domain1.com";
break;

case "b":
$url = "http://www.domain2.com";
break;

default:
$url = "http://www.default.com";
}
}

header( "refresh:1;url=$url" );

?>
<!doctype html>
<html>
<head>
</head>
<body>
<div>Redirecting, Please wait</div>
</body>
</html>

Я создал страницу перенаправления таким образом, потому что для меня важно, чтобы она загружала и отображала определенный контент, а не перенаправляла сразу (и, таким образом, она выдает код 200, а не код 302).

Однако только в Chrome и Safari заголовки перенаправления содержат информацию о ссылающемся URL, который redirect.phpи, таким образом, например, владелец domain1.com будет знать, что посетитель пришел из mydomain.com/redirect.php,

Но в IE и FF ссылка в заголовках равна нулю. Что является причиной такого различного поведения и как я могу исправить это, чтобы они также содержали одинаковую информацию о реферере?

1

Решение

Вы можете попробовать:

header("Location: ".$url."");
0

Другие решения

Рабочий пример (пробовал на FF 27.0.1):

файл page1.php:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Starting page</title>
</head>
<body>
<form action="redirect.php" method="post">
<input type="hidden" name="destination" value="a">
<input type="submit" value="Click here">
</form>
</body>
</html>

файл redirect.php:

<?php

$url = "http://www.default.com";

if(isset($_POST['destination'])){

switch ($_POST['destination']) {

case "a":
$url = "http://www.domain.com";
break;

case "b":
$url = "http://www.examples.com";
break;

default:
$url = "http://www.example.com";
}
}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Landing page</title>
</head>
<body>
<div>Redirecting, Please wait</div>
<script>
window.onload = function() {
setTimeout(function(){
window.location = '<?php echo $url;?>';
}, 4000);
};
</script>
</body>
</html>

Как это работает: После нажатия на кнопку Click here на page1.php, данные отправляются и домен http://www.domain.com выбран. С помощью javascript через 4 секунды после загрузки окна браузер перенаправит пользователя на http://www.domain.com, Я смотрел заголовки реферера в Firebug и они были отправлены.

0

Смущенный. Перенаправление и обновление страницы не одинаково. И еще — не все браузеры поддерживают обновление заголовка.

-1
По вопросам рекламы [email protected]