Перенаправление страницы не происходит при нажатии на ссылку <a>. X-Frame-Options установлен на 'DENY'

На определенной странице моего сайта, например, example.com/redirect.php, я написал тег привязки. <a href="http://news.ycombinator.com/item?id=5311151">path</a>,

При нажатии на эту ссылку страница не загружается. При проверке элемента я получил эту ошибку:

Отказался отображать " https://news.ycombinator.com/item?id=5311151 " во фрейме, потому что он установлен
"X-Frame-Options" для "DENY"


После поиска в Google я обнаружил, что это именно такое поведение, так как владелец другого сайта не хочет отображать его содержимое в iframe за пределами своего домена.

Я пробовал это, но все они загружаются в iframe.

  1. window.location.href = " https://news.ycombinator.com/item?id=5311151 ";
  2. <?php header(location: https://news.ycombinator.com/item?id=5311151"); ?>
  3. window.location.replace (" https://news.ycombinator.com/item?id=5311151 ");


У меня есть два вопроса:

  1. Почему при щелчке ссылки пути новая страница загружается в iframe на той же странице (redirect.php), а не перенаправляется на страницу ycombinator.
  2. Как я могу заставить пользователя перенаправлять на любую страницу за пределами моего сайта.

PS Я использую ламповый стек.

Обновление: как предложил Сергей Середенко в комментариях, я попытался с top.location.href = "..."; Это сработало для меня, и я могу перенаправить страницу.

Другая проблема: мне нужен URL реферера. После выполнения перенаправления с использованием метода Сержа Середенко я не получаю фактический URL-адрес реферера для $_SESSION['HTTP_REFERER'], вместо этого я получаю внутренний URL-адрес. Мне нужен реальный URL реферера.

Я попытался перенаправить URL-адрес на стороне сервера, используя:
<?php header(location: https://news.ycombinator.com/item?id=5311151"); ?>,
но я получаю эту ошибку: "X-Frame-Options" для "SAMEORIGIN".

Как я могу сделать перенаправление на стороне сервера и сохранить реальный URL реферера?
Заранее большое спасибо:)

1 ответ

Обычно, когда вы получаете эту ошибку X-Frame-Options, браузер ожидает получить "частичную" HTML-страницу. Не полная HTML-страница с тегами и т. Д.

Это означает, что когда браузер выполняет запрос к серверу. Например, если оба экрана находятся в "режиме перехода" (Source and destination for example in same page but in different tab like this situation), Мы получаем ту же ошибку.

1) Помните, что header() должна вызываться перед отправкой любого фактического вывода, либо обычными тегами HTML, пустыми строками в файле, либо из PHP. Это очень распространенная ошибка при чтении кода с включенными или требующимися функциями или другой функцией доступа к файлу, с пробелами или пустыми строками, которые выводятся до вызова header(). Та же проблема существует при использовании одного файла PHP/HTML. http://php.net/manual/en/function.header.php

2) Попробуйте это:

<?php
//...some your code
print '<script type="text/javascript"> location.replace("https://google.com/"); </script>';
//...
?>
Другие вопросы по тегам