Состояние FETCH_ERROR преобразуется в ОШИБКУ после нескольких последовательных попыток (устанавливается fetch.error.count ). Как только это произойдет, кортеж отправляется в потоке удаления с помощью AbstractStatusUpdaterBolt , и если у вас подключен DeletionBolt, то URL-адрес будет удален из индекса содержимого Elasticsearch. Он останется в индексе состояния, хотя и будет пересматриваться или не основываться на расписании для ОШИБК.
стандартный путь состоит в том, чтобы сделать это на 3 шагах.
Это повреждает основную пользовательскую модель опыта браузера... пользователи должны всегда быть в состоянии использовать Кнопки Обновить и Кнопки "Назад" в их браузере. Рекомендуйте зафиксировать страницу иначе.
, Если Вы обновляете свой вопрос включать язык/платформу/технологию сервера, который Вы используете тогда, кто-то мог бы быть в состоянии предложить решение.
Очевидный факт, что перепредставление формы генерирует дублирующуюся транзакцию, вызывает беспокойство. У Вас должна быть своего рода проверка, чтобы гарантировать, чтобы каждый отправил данных формы, уникально.
, Например, странице, которая отправила бы форму, нужно дать уникальный идентификатор, который отправлен с формой. Бизнес-логика должна тогда быть в состоянии распознать, что отправленная форма была уже обработана (поскольку (больше) уникальный идентификатор будет тем же), поэтому игнорирует вторую попытку.
'стандартный путь' все еще не мешает клиентам нажать кнопку "Назад" дважды... или даже возвратиться и повторно отправить форму, если они не думают (по любой причине), это было обработано.
Вы не должны пытаться «блокировать» эти действия. Что вы должны сделать, это убедиться, что ничего не происходит, когда кто-то «дважды отправляет» форму.
и в некотором браузере Вы canВґt даже делают это, и это хорошо!
Лучший способ состоит в том, чтобы иметь достаточно логики обработки сессии, что можно распознать 2-е (и вперед) попытка как, "это - просто перепредставление", и проигнорируйте его.
Решение vartec: s решает проблему перезагрузки, а не проблему возврата, поэтому вот решение этой проблемы:
Затем, если пользователь нажимает кнопку «Назад», страница обработки не будет выполнять процесс снова, только перенаправит на страницу процесса.
Поместите этот код на страницу формы
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now-new TimeSpan(1,0,0));
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetAllowResponseInBrowserHistory(false);