«Спасибо за публикацию. Пожалуйста, подождите, пока вы будете перенаправлены ». Нужен?


11

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

Если вы не перенаправлены автоматически, нажмите здесь.

Вы, вероятно, знакомы с подобными сообщениями, особенно при использовании Интернета в 90-х или начале 2000-х годов. В моих собственных проектах я никогда не находил причин заставлять пользователей ждать 2-3 секунды, пока они перенаправляются, например, после регистрации или публикации чего-либо. Но этот шаблон встречается постоянно, даже в таких популярных веб-программах, как PHPBB.

Мой вопрос заключается в том, имеет ли место перенаправление место / потребность в современной (ajaxy) веб-разработке? Существуют ли ситуации, требующие такого перенаправления, которые в конечном итоге раздражают пользователя, и каковы технические причины, стоящие за ними ? Почему бы просто не перенаправить мгновенно, если требуется перенаправление?


Просто предположение: может быть, это как-то связано с предотвращением скриптовых действий или ботов? Хотя есть и лучшие способы сделать это (капча и т. Д.).

Из-за запроса пользователя я изменил мою установку PHPBB для немедленного перенаправления. Это заняло всего пару изменений строки и работает отлично.
Андре Парамес

@Martin: возможно, но если это так, то он полностью ошибочен, поскольку любой бот может следовать за перенаправлениями, как любой браузер (особенно, если есть заголовок Location, как в PHPBB).
Андре Парамес

Ответы:


3

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

Наиболее распространенное намерение (обычно в случае запроса, который создает новую запись в базе данных, обрабатывает платежную транзакцию и т. Д.) - это предотвращение дублирования запросов, если пользователь нажмет кнопку «Обновить» и повторно отправит запрос.

Перенаправление все еще имеет место / потребность в современной (ajaxy) веб-разработке?

Если вам удастся сказать пользователям, у которых отключен Javascript, их запросы будут проигнорированы или, возможно, неправильно обработаны (на ум приходит сообщение «Не нажимайте кнопку отправить больше, чем один раз!» ), Но не так уж много усилий для поддержки этих причудливых Пользователи с отключенным JS и гарантируют, что отдел биллинга не увидит случайную жалобу на двойной биллинг, поэтому перенаправление некоторого вида все еще реализовано во многих интерфейсах.

Почему бы просто не перенаправить мгновенно, если требуется перенаправление?

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


«Это предотвращение повторяющихся запросов» - это делает и переадресация без вывода сообщений. «Перенаправление должно быть выполнено немедленно, если цель состоит в том, чтобы предотвратить многократную отправку форм» - это не должно произойти , потому что F5на Stand byстранице также будет вызывать повторную отправку сообщения.
zerkms

@zerkms - я предлагаю переадресацию в новое местоположение перед отправкой тела ответа (т. е. без страницы
ожидания

5

Прежде всего, не все браузеры будут перенаправлять при наличии заголовка Location. Во-вторых, не все браузеры будут перенаправлять с Javascript, потому что он отключен. В-третьих, не все браузеры будут поддерживать теги meta-refresh. Любой из этих случаев, вероятно, очень редкий, поэтому, вероятно, это не имеет значения. Но даже если это произойдет, я думаю, вы можете перекрывать все эти методы.

То, как страницы PHPBB делают это (ждет 5 секунд или что-то), вообще не нужно. Он должен перенаправить сразу, а если нет, он отобразит HTML-страницу (с мета-обновлением, Javascript и текстом со ссылкой) после отправки заголовков. Почти нет шансов, что эта страница будет отображаться обычным браузером, если она запрограммирована правильно.


«Прежде всего, не все браузеры будут перенаправлять при наличии заголовка Location» [цитата нужна]
Jon Cram

@Jon Cram: технически веб-прокси и расширения могут мешать расположению заголовка. Браузер также может быть нестандартным пользовательским агентом, и владелец сайта пытается отговорить их переходить по сторонним ссылкам, представляя что-то, за что пользователь может легко следовать.
Брайан Литтл

Правильно ли я вас читаю, что вызов header()функции PHP на самом деле может быть проигнорирован? Это меня очень беспокоит. Я уже знал о методах перенаправления HTML и JS и о том, как они менее надежны, но я никогда не думал, что отправляемый на сервер заголовок HTTP может фактически игнорироваться.
Lotus Notes

1
@Lotus Многие люди неправильно отправляют заголовок, что является большой проблемой. Вы должны включить код 3xx перед ним, чего не делают многие. Браузер может игнорировать этот запрос, если он хочет (и я уверен, что некоторые клиенты делают, но не основные браузеры, хотя)
Джо Филлипс

Также обратите внимание, что заголовок Location должен отправлять абсолютный URL, но это часто игнорируется.
Писквор покинул здание

3

Я всегда отправляю перенаправление в заголовке ответа с правильным кодом состояния HTTP (например, 301 или 302 - см. Http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ), что приводит к немедленному перенаправлению. Я не знаю каких-либо веских технических причин, по которым кто-то мог бы показать «пожалуйста, подождите, пока вы будете перенаправлены».


1

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

Если вы отправляете перенаправление с использованием заголовков HTTP, браузер отключается на другом сайте, не делая никаких дополнительных запросов на исходный сайт. Отслеживание на основе Javascript может поймать эти выходы, но предоставляет владельцу сайта лучшие возможности для отслеживания.

В некоторых случаях вы также можете захотеть предоставить пользователю отказ от ответственности, чем они перенаправляются. Это особенно важно для веб-мастеров, работающих в регулируемых отраслях. Если вы не работаете в регулируемой отрасли, такой как банковское дело или фармацевтика, у вас не будет большой оценки этим требованиям.


Итак, в целом, этот шаблон необходим, только если вам нужно отслеживать действия своих пользователей на веб-сайте?
Lotus Notes

0

Это также позволяет кнопке «Назад» правильно работать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.