Повторное представление формы является наиболее распространенной проблемой в многопользовательских веб-приложениях и вызывает много проблем. Существует много сценариев приложений, которые сталкиваются с дублирующими задачами отправки, такими как:
Нажмите кнопку «Отправить дважды». Нажмите кнопку обновления. Повторите предыдущие действия, используя кнопку Browser Back, что приводит к повторному подчинению формы. Повторите формы отправки с использованием истории браузеров. Повторные HTTP -запросы из браузера.
Несколько способов предотвращения повторных представлений форм
1. Отключить кнопку отправки . Используйте JavaScript, чтобы сделать кнопку отправки отключить после отправки формы. Этот метод не позволяет нетерпеливым пользователям нажимать кнопки несколько раз. Но есть проблема. Если клиент запрещает JavaScript, этот метод будет недействительным.В моей предыдущей статье говорится, что использование некоторых плагинов jQuery работает хорошо.
2. Post/redirect/get Mode . Выполните перенаправление страницы после подачи, которое называется режим после Redlect-Get-Get (PRG). Короче говоря, когда пользователь подает форму, вы выполняете перенаправление клиента и перейдите на страницу «Успех».Это может избежать повторяющихся представлений, вызванных пользователями, нажимая на F5, и не будет никаких предупреждений о повторных представлениях форм браузера, а также может устранить те же проблемы, вызванные прямой и обратной организацией браузеров.
3. Храните специальный логотип в сеансе . Когда страница формы запрашивается, генерируется специальная строка флага символов, которая присутствует в сеансе и размещена в скрытом поле формы. При принятии данных формы обработки проверьте, существует ли идентификационная строка, и немедленно удалите их из сеанса, а затем обработайте данные нормально.Если вы обнаружите, что в подчинении формы нет действительной строки флагов, это означает, что форма была представлена, и это представление игнорируется.
Это дает вашему веб -приложению более продвинутую защиту XSRF.
4. Добавьте ограничения в базу данных. Добавьте уникальные ограничения в базу данных или создайте уникальные индексы, чтобы предотвратить дубликаты данных. Это наиболее эффективный способ предотвращения повторных представлений данных.Выше приведено введение в эти 4 метода. Если у вас есть лучшее решение, скажите мне, и эта статья будет обновляться непрерывно.