Я знайшов наступне рішення. Ви можете уникнути перенаправлення після обробки 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даних ed ви отримуєте невеликий <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)
- немає
POSTпереходу на попередню / наступну сторінку через історію браузера
UPD
В якості іншого рішення я прошу функцію запитувати команду Mozilla FireFox, щоб дозволити користувачам налаштувати NextPageзаголовок, який буде працювати як Locationзаголовок і зробити post/redirect/getшаблон застарілим.
Коротко. Коли сервер обробляє POSTдані успішно, це:
NextPageЗаголовок налаштування замістьLocation
- Надайте результат обробки
POSTданих форми так, як це відображатиметься для GETзапиту за post/redirect/getшаблоном
Браузер по черзі бачить NextPageзаголовок:
- Відрегулюйте
window.locationза NextPageзначенням
- Коли користувач оновить сторінку, браузер узгодить
GETзапит NextPageзамість того, щоб повторно POSTформувати дані
Я думаю, що це було б чудово, якби це було здійснено, чи не так? =)