Что необходимо для того, чтобы браузер отображал повсеместное сообщение "эта страница истек", когда пользователь нажимает кнопку "Назад"?
Каковы некоторые удобные способы предотвращения использования пользователем кнопки "Назад" в webapp?
Что необходимо для того, чтобы браузер отображал повсеместное сообщение "эта страница истек", когда пользователь нажимает кнопку "Назад"?
Каковы некоторые удобные способы предотвращения использования пользователем кнопки "Назад" в webapp?
Ну, по умолчанию всякий раз, когда вы имеете дело с формой POST, а затем пользователь возвращается назад, а затем обновляется, то они будут видеть сообщение о том, что браузер повторно передает данные. Но если страница устанавна, чтобы истечь сразу же, им даже не нужно будет обновлять обновления, и они увидели, что на странице прошло сообщение с истекшим сроком действия.
Чтобы избежать обоих сообщений, есть несколько вещей, которые нужно попробовать:
1) Используйте вместо этого форму GET. Это зависит от того, что вы делаете, но это не всегда хорошее решение, поскольку существуют ограничения по размеру для запроса GET. И информация передается в строке запроса, которая не является наиболее безопасной для параметров.
- или -
2) Выполните перенаправление на серверную страницу на другую страницу после формы POST.
Похоже, что на подобный вопрос был дан ответ:
В качестве третьего варианта можно предотвратить возврат пользователя обратно в свой браузер. Единственный раз, когда я чувствовал необходимость сделать это, было не дать им сделать что-то глупое, например, заплатить дважды. Хотя для этого есть лучшие методы на стороне сервера. Если ваш сайт использует сеансы, вы можете запретить им платить дважды, сначала отключив кеш на странице проверки и установив, что он истекает немедленно. И тогда вы можете использовать флаг какого-либо типа, хранящийся в сеансе, который фактически изменит поведение страницы, если вы вернетесь к ней.
вам нужно установить параметр управления pragma-cache в заголовках HTTP: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
Однако, с точки зрения удобства использования, это обескураженный подход к делу. Я настоятельно рекомендую вам искать другие варианты.
ps: как было предложено Стивом, перенаправление через GET является правильным способом (или проверка перемещения страницы с помощью JS).
Попробуйте использовать следующий код в Page_Load
Response.Cache.SetCacheability(HttpCacheability.Private)
используйте session_start
одно из следующих значений:
session_cache_expire(60); // in minutes
ini_set('session.cache_limiter', 'private');
/Примечание:
Язык - это PHP
Я не уверен, что это стандартная практика, но я обычно решаю эту проблему, не отправляя заголовок Vary только для IE. В Apache вы можете поместить следующее в httpd.conf:
BrowserMatch MSIE force-no-vary
В соответствии с RFC:
Значение поля Vary указывает набор полей заголовка запроса, которые полностью определяет, в то время как ответ свежее, разрешено ли кешу используйте ответ, чтобы ответить на последующий запрос без переаттестация.
Практический эффект заключается в том, что когда вы возвращаетесь к POST, IE просто получает страницу из кеша истории. Никакой запрос не поступает на сервер. Я вижу это явно в HTTPWatch.
Мне было бы интересно услышать потенциальные плохие побочные эффекты этого подхода.