Перенаправление пользователей и их влияние на использование кнопки "Назад" - redirect


1

Мне просто интересно, скажем, пользователь начинает по URL-адресу:

http://www.foo.com/

и затем они нажимают ссылку, которая посылает их, чтобы сказать:

http://www.foo.com/some-page.php

но затем внутри этого скрипта вы выполните:

header(Location: http://www.foo.com/another-age.php);

Теперь, что произойдет, если пользователь нажмет кнопку " Назад" в своем браузере? Они отправляются обратно на http://www.foo.com/some-page.php а затем снова перенаправляются на http://www.foo.com/another-age.php делая кнопку "Назад" бесполезной или перенаправляются обратно к http://www.foo.com/?

Я знаю, что могу просто проверить это, но я думал, что некоторые браузеры могут вести себя по-другому и хотят знать, как это должно было работать?

Источник
  •  25
  •  5
  • 16 мар 2020 2020-03-16 22:25:09

5 ответов

-1

Это сделает обратную кнопку бесполезной. Он перенаправит их обратно на " http://www.foo.com/another-age.php "

(По крайней мере, с моим простым опытом)

  • 16 мар 2020 2020-03-16 22:25:12
0

Это будет перенаправлено точно на путь, который вы определили в функции заголовка, которая является http://www.foo.com/another-age.php. Вы также можете перенаправить его на домашнюю страницу, и вы можете посетить путь, нажав кнопку "Назад".

0

Если вы хотите попробовать в браузерах, следующий скрипт создаст три файла, которые вы можете использовать.

<?php

$dir = /tmp/;
foreach(
    array(
        foo.php => <a href="bar.php">Go to bar.</a>,
        bar.php => <?php header("Location: baz.php");,
        baz.php => <h1>Hello Im Baz</h1>
    )
    as $name => $contents
) {
    file_put_contents($dir . $name, $contents);
}

После того, как у вас есть три файла, поместите где-нибудь доступный веб-сайт. Чтобы использовать open foo.php и нажмите ссылку.

В Chrome 46, ударяя назад из baz.php (после перенаправления), возвращает меня в foo.php.

В Firefox Nightly 50 и Opera 12, как и выше.

  • 16 мар 2020 2020-03-16 22:25:11
1

Сообщение от W3C под названием Использовать стандартные переадресации: не отключайте кнопку "Назад"! очевидно, говорит, что: если переадресация из технологии "обновления" (в отличие от перенаправления HTTP) браузер не поймает перенаправитель.

Ответить с цитированием

С другой стороны, "HTTP-переадресация" действует гораздо больше, потому что она выполняется в другом слое. Когда Пользовательский агент (т.е. Браузер или валидатор) сначала контактирует с сервером и запрашивает документ, сам сервер, настроенный на перенаправление документа на другой адрес, отвечает агенту-пользователю, что он должен вместо этого смотреть на новый адрес.

Это специально говорит /some-page.php перемещается в /another-page.php (я несколько думаю, что они также могут быть /another-page.php "идентичными"). С тех пор, по foo.com кнопка возврата браузера будет напрямую отправляться на foo.com.

Об этой функции

header(Location: http://www.foo.com/another-page.php);

Он использует заголовок Location который вы можете прочитать об этом здесь.


Что касается тестирования, вы можете попробовать любой URL-адрес, например goo.gl. Он реализует 301 перенаправление. Вы не получите укороченный URL-адрес после посещения URL-адреса с помощью кнопки "Назад". Или просто перейдите на сайт fb.com, вы будете перенаправлены на facebook.com и, вернее, не вернетесь к прежнему URL-адресу (какой смысл маскировки домена, если вы на самом деле его не скрываете?)

Заметка из Википедии, еще один способ перенаправления перенаправления на историю браузера - это JavaScript

window.location=http://www.example.com/
  • 16 мар 2020 2020-03-16 22:25:11
2

Все зависит от вас и от того, как вы собираетесь использовать в своем коде: header() используется для отправки необработанного HTTP-заголовка (подробнее см. Http://php.net/manual/en/function.header.php), Я использую его, когда хочу перенаправить пользователя на определенную страницу в своем веб-приложении (после того, как пользователь завершит определенную функцию).

Основываясь на моих знаниях, используя header(), браузер не активирует backtom, если у вас нет секунд для перенаправления.

Пример с секундами:

header( "refresh:5;url=http://stackoverflow.com" );

header( "refresh:5;url=wherever.php" );

в другой форме для использования, как вы говорите, если щелкнуть ссылку, перейдите по http://www.foo.com/some-page.php: http://www.foo.com/some-page.php используя heades(), это означает, что ссылка перейдет к wharever.php, что есть код заголовка, который перейдет на some-page.php. с этим, задняя buttom всегда будет доступна. другой способ использования - с использованием или вызовом конкретной функции.

с другой стороны, если вы не хотите сохранять кеш-память в любом браузере, который используется для навигации по вашей веб-странице или объяснения того, как работают и как отключить, здесь есть хорошая статья (есть примеры в разных сценариях): как управлять кэширование веб-страниц во всех браузерах?

Пример с head() PHP:

header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.
  • 16 мар 2020 2020-03-16 22:25:10