HTTP Métodos: GET vs POST


Los dos métodos HTTP más utilizados son: GET y POST.


¿Qué es HTTP?

El Protocolo de Transferencia de Hipertexto (HTTP) está diseñado para garantizar la comunicación entre el cliente y el servidor.

HTTP funciona como un protocolo de solicitud-respuesta entre el cliente y el servidor.

El navegador web puede ser el cliente, y una aplicación de red en una computadora también puede actuar como servidor.

Ejemplo: el cliente (navegador) envía una solicitud HTTP al servidor; el servidor devuelve una respuesta al cliente. La respuesta contiene información de estado sobre la solicitud y también puede contener el contenido solicitado.


Dos métodos de solicitud HTTP: GET y POST

Al realizar solicitudes y respuestas entre el cliente y el servidor, los dos métodos más utilizados son: GET y POST.

  • GET- Solicita datos de un recurso especificado.
  • POST- Envía datos para ser procesados a un recurso especificado.

Los parámetros enviados por GET generalmente se muestran en la URL, mientras que POST, al enviarse mediante un formulario, no se muestra en la URL, por lo que POST es más discreto:


Método GET

Ten en cuenta que la cadena de consulta (pares de nombre/valor) se envía en la URL de la solicitud GET:

/test/demo_form.php?name1=value1&name2=value2

Algunas notas adicionales sobre las solicitudes GET:

  • Las solicitudes GET se pueden almacenar en caché
  • Las solicitudes GET permanecen en el historial del navegador
  • Las solicitudes GET se pueden guardar como marcadores
  • Las solicitudes GET no deben usarse al manejar datos sensibles
  • Las solicitudes GET tienen limitación de longitud
  • Las solicitudes GET solo deben usarse para recuperar datos

Método POST

Ten en cuenta que la cadena de consulta (pares de nombre/valor) se envía en el cuerpo del mensaje HTTP de la solicitud POST:

POST /test/demo_form.php HTTP/1.1
Host: example.com
name1=value1&name2=value2

Algunas notas adicionales sobre las solicitudes POST:

  • Las solicitudes POST no se almacenan en caché
  • Las solicitudes POST no permanecen en el historial del navegador
  • Las solicitudes POST no se pueden guardar como marcadores
  • Las solicitudes POST no tienen requisitos de longitud de datos

Comparación entre GET y POST

La siguiente tabla compara los dos métodos HTTP: GET y POST.

  GET POST
Botón atrás / Actualizar Inofensivo Los datos se vuelven a enviar (el navegador debe informar al usuario de que los datos se volverán a enviar).
Marcadores Se puede guardar como marcador No se puede guardar como marcador
Caché Se puede almacenar en caché No se puede almacenar en caché
Tipo de codificación application/x-www-form-urlencoded application/x-www-form-urlencoded o multipart/form-data. Para datos binarios, se utiliza codificación multipart.
Historial Los parámetros se conservan en el historial del navegador. Los parámetros no se guardan en el historial del navegador.
Limitación de la longitud de los datos Hay limitación. Al enviar datos, el método GET agrega los datos a la URL; la longitud de la URL está limitada (la longitud máxima de la URL es de 2048 caracteres). Sin límite.
Limitación del tipo de datos Solo se permiten caracteres ASCII. Sin limitación. También se permiten datos binarios.
Seguridad En comparación con POST, GET es menos seguro porque los datos enviados son parte de la URL.

¡Nunca use GET al enviar contraseñas u otra información sensible!
POST es más seguro que GET porque los parámetros no se guardan en el historial del navegador ni en los registros del servidor web.
Visibilidad Los datos son visibles para todos en la URL. Los datos no se muestran en la URL.


Otros métodos de solicitud HTTP

La siguiente tabla enumera otros métodos de solicitud HTTP:

Método Descripción
HEAD Igual que GET, pero solo devuelve los encabezados HTTP, no el cuerpo del documento.
PUT Sube la representación del URI especificado.
DELETE Elimina el recurso especificado.
OPTIONS Devuelve los métodos HTTP que soporta el servidor.
CONNECT Convierte la conexión de solicitud en un canal TCP/IP transparente.
Otras extensiones