Вот объяснение, которое я нашел, которое могло бы объяснить это. Это помогло мне, когда я нуждался в его
Вот объяснение проблемы ...
При нажатии на кнопку «Отправить» в форме посылает запрос на веб-сервер, который включает в себя все данные введены на форма. Не только URL-адрес, но и данные формы являются частью запроса, и этот запрос запоминается браузером. Если пользователь нажимает «Обновить», браузер повторяет запрос, снова отправляет тот же URL-адрес и формирует данные на веб-сервер.
Но формы могут быть представлены двумя различными способами: GET или POST, в зависимости от атрибута метода «тег формы». Существует соглашение о том, что запрос GET не имеет побочных эффектов; он только извлекает данные, но не вносит никаких изменений в базу данных. С другой стороны, если запрос изменяет данные, он всегда должен использовать запрос POST. Как я уже сказал, это только соглашения, и между ними не так много технических различий, но очень важно различие заключается в том, что браузеры будут предупреждать пользователя, если они попытаются повторить POST - нажатие «refresh» откроет диалоговое окно предупреждая пользователя о том, что это может привести к повторению операции и подтверждению того, что они действительно хотят повторно отправить. Браузер не отображает это подтверждение при обновлении запроса GET.
Является ли ваша форма использованием метода GET, изменяющим его на POST, самым простым решением, поскольку это, по крайней мере, означает, что пользователь предупреждается, если он пытается обновить.
Но лучшим решением является идиома POST + REDIRECT + GET, предложенная @cletus. Это разделяет обновление базы данных (POST) и представление (GET) на две операции. Нажав на обновление в браузере, вы просто повторяете GET, который не имеет побочных эффектов.
@StackOverflow на самом деле? вы действительно получили его? Этот ответ ничего не делает для вашей проблемы IMO – kolossus