“Дякую за публікацію. Будьте в режимі очікування, поки вас переспрямують. " Потрібні?


11

Дякую за публікацію Будьте в режимі очікування, поки ви перенаправлені.

Якщо вас не переадресовують автоматично, натисніть тут.

Напевно ви знайомі з такими повідомленнями, особливо коли користуєтесь Інтернетом у 90-х або на початку 2000-х. У своїх власних проектах я ніколи не знаходив приводу змусити користувача чекати 2-3 секунди, поки вони переспрямовуються після реєстрації чи публікації чогось, наприклад. Але ця модель з'являється постійно, навіть у популярному веб-програмному забезпеченні на зразок PHPBB.

Моє запитання: чи перенаправлення все ще має місце / потребу в сучасній (ajaxy) веб-розробці? Чи є ситуації, які вимагають перенаправлення на кшталт цього, в кінцевому рахунку дратують користувача, і які технічні причини стоять за ними ? Чому б не просто переадресувати миттєво, якщо потрібне переадресація?


Лише здогадка: можливо, це якимось чином пов’язане із запобіганням сценаріїв дій чи ботів? Однак є кращі методи для цього (Captchas тощо).

Через запит користувача я змінив установку PHPBB для переадресації негайно. Знадобилося лише пару змін рядків і працює чудово.
Андре Парамеш

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

Відповіді:


3

Чи є ситуації, які вимагають перенаправлення на кшталт цього, в кінцевому рахунку дратують користувача, і які технічні причини стоять за ними?

Найпоширеніший намір (як правило, у випадку запиту, який створює нову запис у базі даних, обробляє платіжну транзакцію тощо) - це запобігання повторення запитів, якщо користувач натисне кнопку "Оновити" та повторно опублікує запит.

Чи має перенаправлення все-таки місце / потреба в сучасній (ajaxy) веб-розробці?

Якщо ви можете піти від того, щоб повідомити користувачам, у яких відключений Javascript, що їхні запити будуть ігноровані або, можливо, неправильно оброблені (повідомлення «Не натискайте надсилати більше одного разу!» Впевнені), але це не великі зусилля, щоб підтримати ці вигадливі. Користувачі з обмеженими можливостями JS та забезпечують, щоб відділ виставлення рахунків не бачив випадкових скарг на подвійний рахунок, тому певне переадресація все ще реалізовано у багатьох інтерфейсах.

Чому б не просто переадресувати миттєво, якщо потрібне переадресація?

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


"- це запобігання повторюваних запитів" --- це також робить тихе переадресація. "Переспрямування має бути видано миттєво, якщо метою є запобігання подання декількох форм" --- це не повинно, оскільки F5на Stand byсторінці також буде викликати повторне надсилання повідомлення.
zerkms

@zerkms - Я пропоную переспрямування на нове місце до того, як орган відповіді буде надісланий (тобто немає сторінки "очікування")
danlefree

5

Перш за все, не всі веб-переглядачі переспрямують, коли їм буде надано заголовок Location. По-друге, не всі браузери переспрямують Javascript, оскільки він відключений. По-третє, не всі браузери підтримуватимуть теги метаоновлення. Будь-який із цих випадків, мабуть, дуже рідкісний, тому він, мабуть, не матиме значення. Але навіть якщо це станеться, ви можете перекрити всі ці методи, я думаю.

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


"Перш за все, не всі браузери переспрямують, коли їм буде надано заголовок Місцеположення" [потрібна цитата]
Jon Cram,

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

Чи правильно я вас читаю, що header()функція PHP при виклику може насправді ігноруватися? Це мене дуже хвилює. Мені вже було відомо про методи перенаправлення HTML та JS та про те, наскільки вони менш надійні, але я ніколи насправді не думав, що надісланий HTTP-заголовок, направлений на сервер, насправді можна ігнорувати.
Lotus Notes

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

Зауважте також, що заголовок Місцеположення повинен надсилати абсолютну URL-адресу, але це часто ігнорується.
Пісквор вийшов із будівлі

3

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


1

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

Якщо ви надішлете переспрямування за допомогою заголовків HTTP, браузер перейде на інший сайт без додаткових запитів на початковий сайт. Відстеження на основі Javascript може сприймати ці виходи, але це надає власнику сайту кращі можливості для відстеження.

У деяких випадках ви також можете надати користувачеві відмову, ніж вони переадресовуються. Це особливо важливо для веб-майстрів, які працюють у регульованих галузях. Якщо ви не працюєте в такій регульованій галузі, як банківська справа або фармацевтичні препарати, ви не будете дуже вдячні за ці вимоги.


Отже, підсумовуючи, ця модель необхідна лише у тому випадку, якщо вам потрібно відстежувати дії користувачів на веб-сайті?
Lotus Notes

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.