¿Cuál es la diferencia entre GET y POST?

form-get-post

Las peticiones HTTP del tipo POST suelen proporcionar información adicional del cliente (navegador) al servidor dentro del cuerpo del mensaje. Las peticiones GET, por otro lado, incluyen toda la información requerida o necesaria dentro del URL (localizador de recursos uniforme). Los formularios en HTML pueden usar cualquiera de estos dos métodos solo si se especifica si es POST (method=POST) o si es GET (method=GET) dentro del elemento <form>. Este último suele ser el sugerido por default.  El método que sea elegido y especificado determina la forma en la que la información será enviada al servidor. Cuando se usa el método GET, la información se encontrará codificada dentro del URL, anexada a éste como parámetros de la cadena de consulta. En cuanto al uso de POST, los formularios aparecen incluidos dentro del cuerpo del mensaje de la petición HTTP.

Tabla de comparación

GET
POST
HistorialLos parámetros permanecen en el historial del navegador. Esto debido a que forman parte del URL.Los parámetros no son guardados en el historial del navegador.
MarcadoresAcepta marcadores.Por el contrario, POST no acepta marcadores.
Comportamiento con el comando deshacer y rehacerLas peticiones son re-ejecutadas, sin embargo, muchas no pueden ser reenviadas al servidor  (sólo si el HTML sigue almacenado en el caché del navegador).Por lo general, en POST, el navegador alerta al usuario que los datos necesitan ser reenviados antes de ejcutar la acción.
Tipo de codificación (atributo del enctype)De aplicación: x-www-forma-urlencoded.Multiparte (para datos binarios) o formulario o de aplicación: x-www-form-urlencoded.
ParámetrosPuede enviar parámetros. Sin embargo el tamaño de estos se limita sólo a los que quepan dentro del mensaje de petición (URL).Puede enviar parámetros, incluso si fuera necesario, puede subir archivos al servidor.
HackeosEs fácil de hackear, incluso para un script kiddie, o novato.Si bien, no es imposible, resulta más difícil de hackear que GET.
¿Existen restricciones en los tipos de formularios?Si. GET solo permite caracteres del código ASCII.Contrario a GET, POST no tiene restricciones. También permite datos en código binario.
SeguridadGET tiende a ser menos seguro que POST, debido a que los datos enviados forman parte del URL. Los datos se almacenan en el historial del navegador y en los registros del servidor.POST suele ser más seguro que GET. Esto debido a que los parámetros no se almacenan en el historial del navegador ni al iniciar sesión en algún servidor web.
Restricciones en la longitud de los formulariosSi. Esto porque los formularios se colocan en el URL y la longitud de éste está restringida. Un ejemplo de longitud de URL seguro ronda los 2048 caracteres, sin embargo esto depende del navegador y el servidor web.No existen restricciones en cuanto a la longitud de los formularios en POST.
UsoHablando del método GET, en teoría este no debería ser usado cuando se envían contraseñas o información sensible.Por otro lado, el método POST puede ser usado sin mayor problema al enviar formularios que contengan información sensible, como contraseñas.
VisibilidadEl método GET está visible para todos (se localiza en la barra de dirección del navegador). Este presenta límites en cuanto a la información que será enviada.Las variables del método POST no se pueden visualizar en el URL.
Caché (almacenamiento)Puede almacenarse en la memoria caché.No puede ocultarse en la memoria caché.

Deja un comentario