Diferencias entre GET vs. POST

formulario post vs getPor el twitter de anieto2k me entero que ThinkVitamine ha publicado la Guia definitiva de de GET vs POST en la que el autor intenta hacernos reflexionar sobre el uso correcto e  incorrecto de ambos métodos, a través de 4 reglas básicas:

  1. Usar GET para acciones seguras y POST para acciones no seguras.
    el GET es más usable (se puede guardar en caché, históricos, marcado, distruido y compartido) y puede ser hackeado.
  2. Usa POST para datos restringidos.
    contraseñas o números de tarjeta de crédito no van a ser compartidos.
  3. Usa POST para enviar datos extensos.
    la longitud máxima de una URL es de  2.048 carácteres.
  4. Usa GET en entornos AJAX.
    El XMLHttpRequest ofrece una respuesta más rápida con el método GET.

Una de las formas más seguras para enviar información a través de formularios es aplicando variables de control con un ID único por sesión.

En una breve conclusión se reduce todo a utilizar POST siempre, excepto cuando:

  • Estamos en un entorno AJAX, con consultas inferiores a 2048 carácteres y la consulta puede ser almacenada.
  • No estamos en un entorno AJAX, no se maneja información confidencial, la respuesta del formulario no variariá (idempotente), la consulta es inferior a los 2048 carácteres, y los usuarios pueden utilizar la consulta de forma beneficiosa.

Nota: la idempotencia es la propiedad matemática que permite realizar una acción un número indeterminado de veces y conseguir el mismo resultado aunque solamente se hubiese realizdo la acción una sola vez.

3
18 de Agosto de 2009

3 Responses to “Diferencias entre GET vs. POST”

  1. 1
    Isra

    Creo que llega con leer un poco sobre REST para entender la sencilla y abismal diferencia entre POST y GET. El problema es que estamos acostumbrados al mapeo de URL por defecto de Apache, que ejecuta el script que se solicite, sea el método que sea.

    El estilo de Java (doPost(), doGet(), etc) es más fiel al modelo REST, aunque el desarrollo de sitios web sencillos no es tan ágil.

  2. 2
    raul

    Hola Isra!
    gracias por el aporte, la verdad es que si, utilizar el método REST – CRUD es la mejor opción para desarrollar aplicaciones web.

    • POST: Create, crear un recurso
    • GET: Retrieve, recuperar un recurso
    • PUT: Update, actualizar un recurso
    • DELETE: Delete, eliminar un recurso

    El único inconveniente es que los clientes web (navegadores) más comunes no soportan los verbos HTTP PUT y DELETE, aunque se puede emular su acción a través de POST o GET. Sin duda comprender y utilizar correctamente los verbos HTTP nos ayuda desarrollar con coherencia.

    Un saludo!

  3. 3
    Isra

    Sí, es una pena que algunos navegadores no sean compatibles con PUT/DELETE, porque se podrían desarrollar aplicaciones orientadas a servicios (bueno, siendo rigurosos orientadas a recursos) donde el servidor sirviese un API y la interfaz y toda la lógica del cliente estuviese en JavaScript-AJAX.

Deja un comentario