En esta entrada vamos a comparar el envío de datos utilizando el método POST y el método GET.
Basicamente, la diferencia que existe entre los métodos GET y POST está en la forma de enviar los datos al servidor, ya que el método GET envía los datos a través de la URL y el método POST no.
Por ejemplo, en un formulario si utilizas el método GET , enviarías los datos del cliente al servidor a través de la URL. Formando una URL en la que le pasarías las claves y los valores.
Ejemplo de código con el método GET
Este es un ejemplo de lo que enviaría un formulario que está mostrando el nombre del usuario y que utiliza el método GET para realizar el envío de datos.
<form action="http://www.la-url-que-quieras.com/" method ="get"> Nombre del usuario: <input type="text" name="nombre" value="Paco"> <input type="submit"/> </form> |
Esta es la url que enviaría con los datos en formato clave -> valor.
http://www.la-url-que-quieras.com/
Ejemplo de código con el método POST
Este es un ejemplo de lo que enviaría un formulario que está mostrando el nombre del usuario y que utiliza el método POST para realizar el envío de datos.
<form action="http://www.la-url-que-quieras.com/" method ="post"> Nombre del usuario: <input type="text" name="nombre" value="Paco"> <input type="submit"/> </form> |
Esta es la url que enviaría con los datos:
http://www.la-url-que-quieras.com/?nombre=Paco
A partir de esta gran diferencia te muestro una tabla comparativa, para que puedas ver en todo lo que se diferencian.
GET | POST | |
---|---|---|
Historial | Los parámetros o datos enviados serán visibles en la url , por lo que se podrán ver en el historial | Los parámetros o datos enviados No serán visibles en la url , por lo que no se podrán ver en el historial |
Bookmarked | Puede añadirse a favoritos | No pueden añadirse a favoritos |
Vuelta atras / Renvío |
Las peticiones GET pueden ser re-enviadas una y otra vez, pero pueden estar cacheadas en el navegador. | Los navegadores (generalmente) muestran una alerta de que va a ser reenviado. |
Codificación | application/x-www-form-urlencoded | multipart/form-data or application/x-www-form-urlencoded binary |
Parámetros | Se pueden enviar de 2000 a 4000 parámetros, dependiendo de la limitación del servidor, y teniendo en cuenta la limitación de url segura. | Puedes enviar parámetros, subir imágenes, ficheros, etc. |
Visibilidad | Visible y fácil de cambiar modificar | No es visible y es más difícil de cambiar o modificar |
Tipos de datos | Solamente se pueden enviar caracteres ASCII | Sin restricciones , se envía en binario |
Seguridad | Sin duda GET es el más inseguro de ambos, los datos se pasan a través de la URL y permanecen en el historial. El servidor los almacena en texto plano. | POST es algo más seguro, aunque realmente no se considera un elemento de seguridad. |
Limitaciones en la cantidad de datos | Está limitado a 2048 caracteres, que es la limitación de las URLs seguras. Aunque puede variar dependiendo el servidor y el navegador. | No tiene limitaciones. |
Usabilidad | Realiza peticiones simples al servidor, no se utiliza para enviar datos confidenciales, como pueden ser claves, etc. etc | POST se utiliza para enviar datos, para subir ficheros, o imágenes. |
URL | El método GET envía los datos formateando la URL, enviando ?clave=valor &clave=valor | El método POST no utiliza la URL para el envío de datos |
Caché | Puede ser cacheado | No puede ser cacheado |