Как удалить страницу из истории браузера?
У меня есть страница ASP.Net, содержащая кнопку. Эта страница содержит кнопку ServerSide Paypal.
При нажатии на моем сервере различные умные вещи на заднем конце, а затем перезаписывает ответ как форму и некоторый javascript, который отправляет эту форму на paypal..
Все это отлично работает.
Однако, если пользователь затем выбирает, чтобы вернуться, они прибудут в мою созданную форму для самостоятельной публикации и снова отправят их в Paypal.
Я думал, что если бы мог найти способ, чтобы в истории не была создана моя сгенерированная страница формы, это решит мою проблему. но я не знаю, как исправить это.
Как удалить мою страницу из истории или просто не показывать ее?
Обновление: Спасибо всем... Это отличные ответы. Приоритет всех хороших, но пошел с splattne из-за умного использования скрытого поля, а не файлов cookie для принятия решения.
Ответы
Ответ 1
Я не уверен, что это можно сделать. Но вот идея, как можно предотвратить повторную передачу формы.
Вы можете вставить скрытый ввод в свою форму, которая в начале будет пустой. При отправке вы напишете значение в этом поле и убедитесь, что вы проверяете каждую попытку отправки, если это поле пуст.
Если он не пуст, отправьте сообщение о том, что форма была отправлена ранее, и вы можете предупредить пользователя.
Ответ 2
window.location.replace(URL);
window.location:
заменить (URL)
Заменить текущий документ на один по предоставленному URL. отличие от метода assign() что после использования replace() текущий страница не будет сохранена в сеансе история, то есть пользователь не будет возможность использования кнопки "Назад" для перейдите к нему.
Ответ 3
Как веб-приложение, вы никогда не сможете полностью контролировать браузер пользователя. Даже если бы был способ сообщить браузеру не хранить страницу в истории, и я сомневаюсь, вы не можете быть уверены, что она сработает. Например, умный пользователь может настроить браузер с открытым исходным кодом для хранения каждой страницы в истории, несмотря ни на что.
Я думаю, вы должны попытаться подойти к проблеме под другим углом. Вы могли бы, например, обнаружить, что он имеет ту же форму, которая пересылается, а не отправляет ее на paypal во второй раз. Важно сделать это на стороне сервера.
Ответ 4
Возможно, вы можете установить cookie перед отправкой формы.
Когда страница загружена, проверьте наличие этого файла cookie (это означает, что форма уже была отправлена). Если найдено, вместо автоматической отправки формы, автоматически вернитесь назад (window.history.back()
) еще раз.
Ответ 5
Я не уверен, что вы можете сделать это легко с интеграцией PayPal, но
"Post/Redirect/Get" шаблон может использоваться для решения этой проблемы
Ответ 6
Полезным советом для некоторых может быть это...
window.history.go(-2);
особенно в момент появления всплывающего окна предупреждения о сбое.
Ответ 7
Вы можете просто запрограммировать свою страницу, чтобы она не отправлялась, или что-то делать/перемещаться в другом месте, если window.referer - это страница Paypal, которую вы пытаетесь избежать второй раз.