Я нашел следующий обходной путь. Вы можете избежать перенаправления после обработки POST
запроса, манипулируя history
объектом.
Итак, у вас есть HTML-форма:
<form method=POST action='/process.php'>
<input type=submit value=OK>
</form>
Когда вы обрабатываете эту форму на своем сервере, вы вместо того, чтобы перенаправлять пользователя /the/result/page
, настраивая Location
заголовок следующим образом:
$cat process.php
<?php
process POST data here
...
header('Location: /the/result/page');
exit();
?>
После обработки POST
редактируемых данных вы визуализируете небольшой размер, <script>
и результат/the/result/page
<?php
process POST data here
render the <script> // see below
render `/the/result/page` // OK
?>
<script>
Вы должны оказывать:
<script>
window.onload = function() {
history.replaceState("", "", "/the/result/page");
}
</script>
Результат:
как вы можете видеть, данные формы POST
редактируются в process.php
скрипт.
Этот скрипт обрабатывает POST
данные и рендеринг /the/result/page
сразу с помощью:
- нет перенаправления
- нет
POST
данных при обновлении страницы (F5)
- нет re
POST
при переходе на предыдущую / следующую страницу через историю браузера
UPD
В качестве другого решения я прошу команду Mozilla FireFox запросить функцию, чтобы пользователи могли настроить заголовок, который будет работать как заголовок и сделать шаблон устаревшим.NextPage
Location
post/redirect/get
Коротко. Когда сервер обрабатывает POST
данные формы успешно, он:
NextPage
Заголовок установки вместоLocation
- Отображать результат обработки
POST
данных формы, как он будет отображаться для GET
запроса в post/redirect/get
шаблоне
Браузер, в свою очередь, увидит NextPage
заголовок:
- Отрегулировать
window.location
со NextPage
значением
- Когда пользователь обновляет страницу, браузер будет согласовывать
GET
запрос NextPage
вместо преобразования POST
данных.
Я думаю, это было бы здорово, если бы это было реализовано, не так ли? =)