Necesito redirigir a un usuario a un sitio externo a través de una solicitud POST.¿Una buena forma de redireccionar con una solicitud POST?
La única opción que descubrí es hacerlo enviar un formulario a través de JavaScript.
¿Alguna idea?
Necesito redirigir a un usuario a un sitio externo a través de una solicitud POST.¿Una buena forma de redireccionar con una solicitud POST?
La única opción que descubrí es hacerlo enviar un formulario a través de JavaScript.
¿Alguna idea?
El uso de un formulario es probablemente su única opción, ya que los enlaces, las redirecciones HTTP y <meta http-equiv="refresh" >
solo harán que el navegador cargue otra URL utilizando el método GET.
Sin embargo, no necesariamente tiene que usar JavaScript para enviar un formulario. Si alguna interacción del usuario es aceptable, puede usar un formulario con algunos campos <input type="hidden">
y dejar que el usuario presione el botón Enviar.
Es posible que también desee asegurarse de que la página a la que está redirigiendo no acepte los parámetros GET. Algunos scripts aceptan tanto GET como POST indiscriminadamente.
Javascript es la única forma (para hacerlo automáticamente). Simplemente no puede redirigir una solicitud POST
a través de los métodos estándar http
. ¿Estás seguro de que GET
no es una opción aquí?
Simplemente configure la URL de acción del formulario HTML en el sitio externo en particular.
He aquí un SSCCE, simplemente copy'n'paste'n'run que:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2604530</title>
</head>
<body>
<form action="http://stackoverflow.com/questions/2604530/answer/submit" method="post">
<textarea name="post-text"></textarea>
<input type="submit" value="Post Your Answer">
</form>
</body>
</html>
Vas a ver que Stackoverflow tiene una buena protección CSRF;)
No es muy claro lo que quiere decir, así que vamos a tomar unos escenarios:
usuario debe enviar formulario a un servidor que no sea su propia
fácil, basta con especificar el destino como la acción del formulario:
<form action="http://someotherserver.com" method="post">
usuario debe ser redirigido después de un POST satisfactoria presentar
fácil, aceptar y procesar los datos POST, como de costumbre, luego responde con un encabezado de redirección 302
o 303
.
usuario debe publicar datos en el servidor y, después de la validación, que desea publicar esos datos a otro servidor
poco complicado, pero tres opciones:
307
, lo que significa que el usuario debe intentar la misma solicitud en otra dirección. Teóricamente significa que el navegador debe enviar los mismos datos a otro servidor. No estoy seguro de lo bien que esto es compatible, pero cualquier navegador que entienda HTTP1.1 debería poder hacerlo. AFAIA no se usa tan a menudo en la práctica. Ver aquí para una lista de todas las opciones de redirección HTTP: http://en.wikipedia.org/wiki/Http_status_codes#3xx_Redirection
Sé que 307 redireccionamientos en FF19 harán que aparezca el cuadro de diálogo de confirmación. No estoy seguro acerca de las versiones anteriores. – rahulmohan
Puede aclarar qué quiere decir con eso? ¿Desea enviar/reenviar los datos POST a otro servidor? ¿Desea que el navegador de los usuarios lo redireccione después de que PUBLICÓ una solicitud? Algo más...? – deceze