Encontrei a próxima solução alternativa. Você pode escapar do redirecionamento após processar a POST
solicitação manipulandohistory
objeto.
Então você tem o formulário HTML:
<form method=POST action='/process.php'>
<input type=submit value=OK>
</form>
Quando você processa este formulário no servidor, em vez de redirecionar o usuário /the/result/page
, configure o Location
cabeçalho da seguinte maneira:
$cat process.php
<?php
process POST data here
...
header('Location: /the/result/page');
exit();
?>
Após o processamento dos POST
dados editados, você torna pequeno <script>
e o resultado/the/result/page
<?php
process POST data here
render the <script> // see below
render `/the/result/page` // OK
?>
O <script>
que você deve render:
<script>
window.onload = function() {
history.replaceState("", "", "/the/result/page");
}
</script>
O resultado é:
como você pode ver, os dados do formulário são POST
editados no process.php
script.
Este script processou POST
dados e renderização de /the/result/page
uma só vez com:
- sem redirecionamento
- não há
POST
dados quando você atualiza a página (F5)
- não há
POST
quando você navega para a página anterior / seguinte através do histórico do navegador
UPD
Como outra solução, peço que o recurso solicite à equipe do Mozilla FireFox que permita aos usuários configurar o NextPage
cabeçalho que funcionará como Location
cabeçalho e farápost/redirect/get
padrão obsoleto.
Em resumo. Quando o processo do servidor forma POST
dados com êxito, ele:
- Configurar
NextPage
cabeçalho em vez deLocation
- Renderize o resultado do processamento de
POST
dados do formulário como renderizaria para GET
solicitação no post/redirect/get
padrão
O navegador, por sua vez, quando vê o NextPage
cabeçalho:
- Ajuste
window.location
comNextPage
valor
- Quando o usuário atualizar a página, o navegador negociará a
GET
solicitação em NextPage
vez de reformular os POST
dados
Eu acho que isso seria excelente se implementado, não seria? =)