2010-10-23 20 views
17

Cuando hago una solicitud HTTP POST a través de un formulario web, ¿hay alguna diferencia (práctica o teórica) entre los parámetros especificados en la URL y los parámetros pasados ​​con formulario en el servidor?Publicación HTTP: parámetros url y datos de formulario

¿Puedo hacer POST completo con los parámetros de la url y esperar el mismo resultado que con las entradas de formulario?

igual:

<form action="/?id=2" method="post"> 
     <input type="text" name="name" value="John"/> 
     <input type="submit" value="submit"/> 
    </form> 

O:

<form action="/?id=2&name=John" method="post"> 
     <input type="submit" value="submit"/> 
    </form> 

Gracias.

+1

su respuesta está en esta publicación: http://stackoverflow.com/questions/611906/http-post-with-url-query-parameters-good-idea-or-not/612022#612022 – BrokenGlass

Respuesta

15

Las referencias Gabriel y BrokenGlass proporcionados son realmente genial, ¡pero voy a dar mi 2 centavos.

Supongo que ya sabe un poco acerca de cómo recuperar los datos enviados desde el formulario en el lado del servidor. Si no lo hace, comience allí y las respuestas llegarán más rápido de lo que podría imaginarse.

Bueno, los parámetros enviados en la URL o en la acción del atributo del formulario son parámetros de datos GET. Serán analizados y puestos a disposición como tales. Período.

Los campos de entrada de un formulario con el método POST se envían como datos POST y se analizan y están disponibles como tales.

De ejemplos que diste, y suponiendo que está utilizando PHP, podríamos recuperar la siguiente:

Ejemplo 1

$_GET['id'] 
$_POST['name'] 

Ejemplo 2

$_GET['id'] 
$_GET['name'] 

Esperamos que la los conceptos son claros.

+0

+1 - many a los sitios no les importa si los parámetros llegan a la cadena de consulta o al cuerpo de la solicitud (por ejemplo, cualquier cosa que se use en HttpServletRequest.getParameter() o $ _REQUEST de PHP), pero es * posible * distinguible; por lo tanto, no puede * esperar * el mismo comportamiento en el caso general. Sin embargo, bien puede funcionar para un sitio determinado. – SimonJ

+0

Yeap, eso es cierto. Es por eso que hice algunas consideraciones sobre ejemplos. Para el caso general, incluso las cookies son una extensión del protocolo HTTP y se puede acceder a través de recursos de solicitud generales. Pero para mayor claridad sobre este tema, creo que deberíamos tener en cuenta las especificaciones. GET y POST son métodos diferentes debido a los diferentes propósitos (a lo largo de otros métodos como HEAD, PUT, DELETE ...). Cada método HTTP tiene su propio propósito, y todo el software en el proceso intermedio (como el servidor HTTP) puede tener diferentes formas de enhebrarlos (y los datos envueltos en cada uno). – Dave

1

Debe leer this article sobre las diferencias entre GET y POST (GET es cuando pone sus parámetros en la URL, y POST es cuando pone sus parámetros en el formulario).

Además, esta pregunta ya ha sido contestada here on StackOverflow

Cuestiones relacionadas