Подтвердить что ты не робот

Что происходит, когда я нажимаю кнопку BACK браузера?

Рассмотрим сценарий:

  • Я посетил страницу веб-сайта, созданного с использованием ASP.NET. Страница представляет собой простую страницу aspx, содержащую серверные элементы управления ASP.NET.

  • Я нажал на ссылку, которая приведет меня к другой странице на том же сайте.

  • Я нажал кнопку BACK в браузере.

ВОПРОС. Что происходит с точки зрения жизненного цикла страницы? Происходят ли все события или браузер просто отображает кешированную версию страницы без каких-либо запросов?

4b9b3361

Ответ 1

Я думаю, что лучший ответ: это зависит от браузера, особенно после публикации/обратной передачи.

Старые браузеры использовали для отображения диалогового окна подтверждения, что "страница содержит данные POST, которые будут повторно отправлены", и вы можете либо продолжить (повторно отправить), либо отменить. Поскольку все, что происходит в ASP.NET WebForms, является частью элемента FORM (ViewState, events и т.д.), Это приведет к повторению всего жизненного цикла.

Конечно, это не вызвало никаких проблем с дублирующими представлениями, поэтому многим сайтам приходилось сталкиваться с обходными решениями для проблемы с dupe, и сегодня большинство браузеров просто извлекают страницу из кэша.

... Это , кроме, вы переопределяете заголовки управления кешем и заставляете браузер не хранить страницу в кеше. Очевидно, что в этом случае он не может быть извлечен из кеша, поэтому обычно он будет повторно отправлен. Но, опять же, это зависит от браузера - например, некоторые браузеры не разрешают повторную передачу через SSL, поэтому, если этот протокол используется, пользователь просто увидит сообщение о том, что страница истекло/не может быть показано на рисунке.

Подумайте об этом, вероятно, еще лучший ответ: как разработчик сайта, вы действительно не можете зависеть от какого-либо конкретного поведения в браузере пользователя при нажатии кнопки "Назад". Если дублирующаяся подача может иметь отрицательные побочные эффекты (например, взимать кредитную карту дважды), тогда вам необходимо принять адекватные меры, чтобы это не происходило. В любом случае, это хорошая практика, так как пользователю вполне возможно просто дважды щелкнуть кнопку "отправить".

Ответ 2

мы даже попытались

Response.ExpiresAbsolute = DateTime.Parse("1/1/1980");
Response.AddHeader("cache-control", "no-store, must-revalidate, private");
Response.AddHeader("Pragma", "no-cache");

для решения этой проблемы

Ответ 3

обычно все события должны происходить, но если у вас есть браузер uber, чем может показаться, чтобы отображать кэшированную страницу вы можете просто поставить точку останова в вашей странице Load и посмотреть, произойдет ли она

Ответ 4

Страница будет отображаться в кеше.