Да, как говорит Виктор, это не печенье. Проблема в том, что страница кэшируется браузером.
В вашем примере это вполне ожидаемо, поскольку страница не изменилась с тех пор, как пользователь пошел назад и затем вперед (представьте, что они внесли некоторую информацию и, например, забыли что-то с последней страницы).
Это становится действительно грязным, хотя, когда страница на самом деле является НОВОЙ страницей (страница 1 и страница 2 имеют некоторый URL, ту же форму, различное ожидаемое содержимое), с этой проблемой я тоже сталкиваюсь.
Единственно достоверные способы предотвращения такого поведения, о котором я знаю, это (в произвольном порядке):
Использование другого URL-адреса (добавьте в конец переменной url произвольную цифру-букву в качестве переменной get, назовите ее «uid» или что-то подобное). Это не помешает взад и вперед, но не позволит двум страницам с одинаковыми URL-адресами быть перепутанными кешем браузера.
Добавьте немного javascript, который говорит что-то вроде "onload: reload". Очевидно, что вам не нужен бесконечный цикл, поэтому у вас может быть другая переменная get, которая сообщит сценарию, загрузила ли она ранее страницу. Возможно скрытый ввод на странице, с которой он проверяет. Итог, страница принудительной перезагрузки.
Есть js-скрипт, который говорит "onunload, стереть все пользовательские значения ввода". Разгрузка была бы хорошей, поскольку она не уничтожила бы запрос POST или GET, я не думаю, только значения, оставленные на странице, поскольку она оставлена позади.
Напишите js-скрипт, который onload стирает все поля, для которых значение не установлено в качестве атрибута (т. Е. input type='text' value='stuff'
). Если оно видит значение в самом HTML, оно оставляет его.
Последний - это то, над чем я работаю. Сложность заключается в том, чтобы не нарушить доступность страницы.