Publicar / Redirigir / Obtener ( PRG ) es un patrón de diseño de desarrollo web que permite que la página que se muestra después del envío de un formulario se vuelva a cargar, compartir o marcar sin efectos nocivos, como enviar el formulario en otro momento.
Cuando se envía un formulario web a un servidor a través de una solicitud HTTP POST , los intentos de actualizar la respuesta del servidor pueden hacer que el contenido del POST original se vuelva a enviar, lo que posiblemente cause resultados no deseados, como una compra web duplicada . [1] Algunos navegadores mitigan este riesgo advirtiendo al usuario que están a punto de volver a emitir una solicitud POST.
Para evitar este problema, muchos desarrolladores web utilizan el patrón PRG [2]: en lugar de responder con contenido, el servidor responde a una solicitud POST redirigiendo al cliente a otra ubicación. La especificación HTTP 1.1 introdujo el código de respuesta HTTP 303 ("Ver otros") para garantizar que, en esta situación, los navegadores puedan actualizar de forma segura la respuesta del servidor sin que se vuelva a enviar la solicitud POST inicial.
El patrón PRG no puede abordar todos los escenarios de envío de formularios duplicados. Por ejemplo, si un usuario web actualiza antes de que se complete el envío inicial, posiblemente debido al retraso del servidor , se produce una POST duplicada en ciertos agentes de usuario.
Marcadores
Los agentes de usuario (como los navegadores) almacenan solo la URL de una solicitud HTTP como marcador. Debido a esto, una respuesta basada en el cuerpo de la solicitud HTTP POST no se puede marcar como favorita. Con el patrón PRG, el URI de la solicitud se puede marcar de forma segura.
Referencias
enlaces externos
- Redirigir después de la publicación , Michael Jouravlev, agosto de 2004
- Descripción del patrón para J2EE , Michael Jouravlev, 14 de agosto de 2003
- OBTENER después de POST Adam Vandenberg
- Haciendo el PRG en JSF1.2