GET vs. POST: los dos métodos de petición HTTP más conocidos cara a cara
En las páginas web actuales, los clientes (también llamados navegadores) no solo obtienen un elemento HTML del servidor, sino que también envían información como la siguiente:
- El texto de búsqueda que el usuario ha escrito en el motor de búsqueda
- El contenido de los formularios
- El filtro de selección en tiendas online
- El orden de una lista
Para enviar ciertos tipos de información al servidor, el protocolo HTTP provee diferentes métodos de petición. Los dos más importantes son GET y POST, los cuales, aunque entregan los mismos resultados, revelan algunas diferencias entre ellos. Lee a continuación cuáles son estas diferencias y cuándo conviene utilizar uno u otro.
Si quieres aprender más sobre los métodos de petición en general, no te pierdas nuestro artículo sobre las peticiones HTTP en nuestra guía.
- Certificado SSL Wildcard
- Registro privado
- 1 cuenta de correo electrónico por contrato
Métodos de petición HTTP: GET
Con el método GET, los datos que se envían al servidor se escriben en la misma dirección URL. En la ventana del navegador, lo encontrarás así:
www.ejemplo.com/registrarse.php?nombre=pedro&apellido=perez&edad=55&genero=hombre
Toda la información introducida por el usuario (los llamados “parámetros URL”) se transmiten tan abiertamente como el URL en sí mismo. Esto tiene ventajas y desventajas.
Ventajas de GET
Los parámetros URL se pueden guardar junto a la dirección URL como marcador. De esta manera, puedes introducir una búsqueda y más tarde consultarla de nuevo fácilmente. También se puede volver a acceder a la página a través del historial del navegador.
Esto resulta práctico, por ejemplo, si visitas con asiduidad un mismo lugar en Google Maps o si guardas páginas web con configuraciones de filtro determinadas.
Desventajas de GET
La mayor desventaja del método GET es su débil protección de los datos. Los parámetros URL que se envían quedan visibles en la barra de direcciones del navegador y son accesibles sin clave en el historial de navegación, en el caché y en el log de los servidores.
Otra desventaja es que su capacidad es limitada: dependiendo del servidor y del navegador, no es posible introducir más de 2000 caracteres. Además, los parámetros URL solo pueden contener caracteres ASCII (letras, números, signos, etc.) y no datos binarios como archivos de audio o imágenes.
Métodos de petición HTTP: POST
El método POST introduce los parámetros en la solicitud HTTP para el servidor. Por ello, no quedan visibles para el usuario. Además, la capacidad del método POST es ilimitada.
Ventajas de POST
En lo relativo a los datos, como, por ejemplo, al rellenar formularios con nombres de usuario y contraseñas, el método POST ofrece mucha discreción. Los datos no se muestran en el caché ni tampoco en el historial de navegación. La flexibilidad del método POST también resulta muy útil: no solo se pueden enviar textos cortos, sino también otros tipos de información, como fotos o vídeos.
Desventajas de POST
Cuando una página web que contiene un formulario se actualiza (por ejemplo, cuando se retrocede a la página anterior) los datos del formulario deben transferirse de nuevo (puede que alguna vez hayas recibido una de estas advertencias). Por este motivo, existe el riesgo de que los datos se envíen varias veces por error, lo que, en el caso de una tienda online, puede dar lugar a pedidos duplicados. No obstante, las webs modernas de las tiendas suelen estar preparadas para evitar este tipo de problemas.
Además, los datos transferidos con el método POST no pueden guardarse junto al URL como marcador.
Comparación entre los métodos GET y POST
GET | POST | |
---|---|---|
Visibilidad | Visible en la barra de direcciones para el usuario | Invisible para el usuario |
Marcadores e historiales de navegación | Los parámetros URL se guardan junto al URL | Los parámetros URL no se guardan junto al URL |
Caché y registro del servidor | Los parámetros URL se guardan sin cifrar. | Los parámetros URL no se guardan automáticamente |
Comportamiento al actualizar el navegador o retroceder | Los parámetros URL no se envían de nuevo | El navegador advierte de que los datos del formulario se enviarán de nuevo |
Tipo de datos | Solo caracteres ASCII | Caracteres ASCII y datos binarios |
Longitud de datos | Limitado al máximo del URL (2048 caracteres) | Ilimitado |
¿Cuándo usar uno u otro?
El método POST es aconsejable cuando el usuario debe enviar datos o archivos al servidor, como, por ejemplo, cuando se rellenan formularios o se suben fotos.
El método GET es adecuado para la personalización de páginas web: el usuario puede guardar búsquedas, configuraciones de filtros y ordenaciones de listas junto al URL como marcadores, de manera que en su próxima visita la página web se mostrará según sus preferencias.
A modo de resumen:
- GET para la configuración de páginas web (filtros, ordenación, búsquedas, etc.)
- POST para la transferencia de información y datos