Почему HTML-формы иногда очищаются при нажатии кнопки браузера

Я уверен, что все знают это поведение. Вы заполняете форму в Интернете и отправляете ее. После подачи вы признаете, что вы заполнили некоторые неверные данные. Таким образом, вы нажимаете кнопку браузера назад. Затем иногда в форме все еще есть данные, которые вы ввели (что вы надеетесь в этой ситуации), а иногда и нет.

Я не мог найти какое-либо соединение, когда оно очищается, а когда нет.

Некоторые ответы, которые я нашел в Интернете /stackoverflow:

  • при соединениях https, формы всегда очищаются
  • при использовании динамических сайтов с сеансами, формы всегда очищаются

Но оба они определенно ошибочны. Я видел сайты (как один из моих собственных), которые сохраняют данные формы после того, как браузер и используют https и используют сеансы.

Итак, пожалуйста: может кто-нибудь объяснить мне, как браузеры обрабатывают этот материал?

Кстати: моя задача - убедиться, что данные формы не очищены.

Ответ 1

Я не могу дать окончательный ответ для всех сценариев.

Как веб-разработчик, здесь правило, которое я обычно придерживаюсь для сайтов, которые я разрабатываю, для достижения цели не дать пользователю потерять данные:

  • Отключите все кеширование (через HTTP-заголовки) на странице, которую вы хотите сохранить.
  • Захват всех данных в сеанс (или некоторое другое временное хранилище) при отправке формы.
  • Если пользователь перемещается назад, браузер запрашивает новую версию страницы (потому что вы ее никогда не кэшировали).
  • На странице есть логика, чтобы посмотреть на сеанс/базу данных/где бы то ни было и повторно заполняет все поля на основе последнего состояния ввода. Если на странице были динамические входы, у вас должно быть достаточно данных для их воссоздания.
  • Как только процесс будет завершен, используйте шаблон POST/Redirect/GET, чтобы очистить данные сеанса и затруднить возврат пользователя на исходную страницу.

Некоторые ответы, которые я нашел в Интернете /stackoverflow:
 1. в https-соединениях формы всегда очищаются
 2. При использовании динамических сайтов с сеансами формы всегда очищаются

Я считаю, что # 1 зависит от настроек браузера/безопасности/сценария.

Предположение № 2, конечно же, неверно во всех случаях (только что описанный шаблон использует сессионные и динамические формы).

Ответ 3

Мне смешно, что ссылка, которую вы предоставили, была спрошена до этого, но она говорит, что ее ответ на этот вопрос. О, и никаких принятых ответов ни.....