Recomendaciones para el paso de variables por GET y POST

Clasificado en:

Deberíamos usar GET:

  • Si no nos importa que los parámetros se vean en la URL.
  • Si queremos transferir los datos de la manera más rápida posible.
  • Si el formulario HTML va a transferir variables de poco tamaño.
  • Si queremos que el usuario pueda cambiar el contenido de la web a través de los parámetros de la URL.

Por su parte, deberíamos usar POST:

  • Si no queremos que las variables se muestren en la URL.
  • Si el formulario transfiere mucha información, o variables que tengan un tamaño considerable.
  • Si la variables contienen carácteres que no son ASCII.

¿Alguien tiene más recomendaciones?

Actualización 1:

  • Hay que tener en cuenta que la limitación del tamaño de las variables en GET viene determinado por el tamaño del querystring. En la mayoría de los servidores web se limita a 4K, es decir, 4000 letras.
  • El paso de variables por POST debe emplearse en conexiones seguras, o HTTPS.
  • Finalmente, es posible pasar carácteres ASCII en la URL siempre que se codifiquen adecuadamente.

Actualización 2:

Claudex nos recuerda que es mucho mejor basarnos en la especificación del HTTP/1.1 para decidirnos por un método u otro.

icono de usuario

Para usar GET, además hay una limitación de tamaño que depende de los navegadores, está entorno a los 8K.

Para POST añadiría que es el método a utilziar en conexiones HTTPS,para forzar el encriptado de los datos.

Respecto a los caracteres que no son ASCII, nada impide codificarlos con urlencode para que puedan ser pasados por GET.

Enviado por Guti (no verificado) el Lun, 25/10/2004 - 08:08.
Imagen de Jordi

Perfecto, voy a cambiar la entrada, me parecen muy acertadas tus sugerencias.

Enviado por Jordi (no verificado) el Lun, 25/10/2004 - 21:36.
icono de usuario

La documentación del w3c establece que la principal razón para el uso de GET o POST es la posibilidad de cambio en el sitio.
GET debe usarse en situaciones de idempotencia, o sea, cuando la consulta no afecta los datos.
En cambio, POST se utiliza cuando la consulta afecta los datos en la página. De ahí que sea bastante lógico que los navegadores pidan confirmación para volver a una página (al hacer back) donde se realizó una consulta POST, ya que implica una acción sobre el sitio.

Enviado por Claudex (no verificado) el Mar, 26/10/2004 - 18:11.
Imagen de Php y otras yerbas, por clbustos

POST y GETMe apesta ponerme VM (viejo-de-mierda), pero a veces es necesario llamar al orden y la cordura!
Según la RFC-2616, la principal razón para usar los distintos métodos es el objetivo principal de la petición.
GET sirve recoger la información, cualquier...

Enviado por Php y otras yerbas, por clbustos (no verificado) el Mar, 26/10/2004 - 18:25.
Imagen de Jordi

Cuánta razón tienes :-)
No hay nada como seguir la documentación del w3c para aclarar las dudas... Gracias!

Enviado por Jordi (no verificado) el Vie, 29/10/2004 - 11:57.
icono de usuario

Jejeje. De nada. Para eso estamos. Soy un ratón de e-biblioteca con eso de los estándares :)

Enviado por Claudex (no verificado) el Sáb, 30/10/2004 - 06:26.
icono de usuario

Hola, estoy trabajando con php y ajax, el problema que tengo que pasar una variable que contiene el simbolo + y no se como hacerlo ya que al obtenerla con get, ya que corta el string por ejmplo intento pasar c++ y solo obtengo c.

gracias por su ayuda

Enviado por Oscar (no verificado) el Lun, 14/01/2008 - 13:51.
Imagen de clbustos

+ en un GET indica un espacio. Si mandas desde un js, ocupa escape()

Enviado por clbustos el Lun, 14/01/2008 - 18:20.
icono de usuario

gracias por tu respuesta.
Y en ese caso como puedo solucionar el problema de pasar el simbolo +
gracias.

Enviado por oscar (no verificado) el Mar, 15/01/2008 - 11:26.

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato