Simular un Redirect con método POST

Tarde o temprano, cualquier desarrollador se encuentra con el deseo de poder realizar un Redirect a una página, pero pasarle parámetros por POST en lugar de hacerlo como si fuera un GET.

Lamentablemente esto es imposible, porque por su funcionamiento un Redirect a otra página siempre será un GET. La única forma de realizar un POST sin recurrir a Javascript es utilizando un formulario con un atributo method=”post”

Aunque no es posible hacer un redirect por post, con muy poco javascript es posible conseguir un resultado similar.

El truco es crear un formulario con method=”post” y cuyo action sea la url a la cual se quiere redirigir. Luego crear en el formulario los parámetros que se quieren pasar a la url como campos hidden para que no sean vistos (otra alternativa sería crearlos como text, y agregarle al formulario display=”none”, la idea es que el formulario no se vea)

Luego utilizamos un poco de Javascript, para que el formulario se envíe automáticamente, sin intervención alguna del usuario.

El resultado será que el explorador apuntará a la pagina destino, y se habrán enviado los parámetros deseados por POST. ¿Cual es la diferencia con un verdadero redirect? Por un lado que es un POST, y además que requiere una página intermedia que se encargue de armar un formulario y enviarlo.

Para demostrar esta idea creé en GitHub un simple proyecto en Grails que hace precisamente esto. Pueden ver el proyecto en https://github.com/soluciones3f/postredirect

Si este pequeño ejemplo te ayudó, o conoces otra forma de lograr esto, o encontraste un error, por favor dejanos un comentario.


Discussion Area - Leave a Comment