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

Por robert allen
¿Cuál es la diferencia entre HTTP GET y HTTP POST?
Comstock/Comstock/Getty Images

Cuando envías un formulario, uno de los dos métodos se usa detrás de las escenas para transmitir los datos de ese formulario a cualquier página Web o código que esté diseñado para leerlo. Dependiendo de las circunstancias, el método puede ser tanto GET o POST. Ambos pueden ser utilizados para manejar el mismo tipo de datos, pero hay diferencias claras e importantes entre GET y POST. Por razones prácticas, facilidad de uso y seguridad, cualquier situación específica normalmente requiere un tipo específico de solicitud de formulario.

GET vs. POST

Estrictamente hablando, la diferencia entre GET y POST reside en cómo se transfieren las solicitudes. La información en GET se transmite en la URL. Si alguna vez has visto una URL que incluye signos de interrogación y los símbolos de unión, estabas buscando a una petición GET: example.com/request.php?var1=foo&var2=bar es una cadena GET que codifica la variable "var1" como "foo" y la variable "var2" como "bar". La información POST está incluida en el cuerpo de la solicitud, y no es visible en la cadena de URL (y por lo tanto, no es visible para el usuario).

Pautas formales

Formalmente, las directrices HTML dicen que GET se debe usar para solicitudes "idempotent", o solicitudes que no cambian nada. Por ejemplo, imagina una página Web que devuelve el clima local: "example.com/weather.php?zipcode=12345". El acto de presentar esa solicitud una y otra vez no cambia nada. POST debe utilizarse para las solicitudes que no son idempotent. Por ejemplo, supongamos que estabas haciendo una compra con tu tarjeta de crédito. Presentar esa petición una y otra vez podría llevar a cambios bastante grandes. Debido a que volver a presentar una solicitud POST tiene consecuencias (incluso si son menores), los navegadores web suelen hacer aparecer una solicitud para que el usuario confirme que realmente quiere volver a presentar el formulario de consulta.

Ventajas de GET

GET tiene un número de ventajas sobre POST. Debido a que GET se codifica como parte de una URL, puedes cortar y pegar el URL y compartirla con otras personas. Las peticiones GET también se pueden marcar. Si compruebas periódicamente el tiempo, podrías agregar "example.com/weather.php?zipcode=12345" a la barra "Favoritos" de tu navegador, por lo que al hacer clic en ese enlace automáticamente cargas tu página meteorológica personalizada. Debido a que las peticiones GET son visibles (y editables) por el usuario, también pueden ser pirateadas. Por ejemplo, si el sitio meteorológico no ofreció una forma obvia de cambiar la ubicación de la solicitud de tiempo, puedes cambiar manualmente "12345" a "99762" para mirar el tiempo en Nome, Alaska en lugar del tiempo en Schenectady.

Cuándo usar POST

Incluso en las situaciones que son idempotent, POST tiene usos claros ocasionales. Algunos de estos se basan en la seguridad o la legalidad. Las variables GET se transmiten "en claro", ya que no quieres enviar información de tarjetas de crédito, números de seguridad social, contraseñas o información confidencial del usuario a través de GET. Dado que los datos POST se oscurecen, es preferible en esas situaciones. POST también se usa para la transmisión de grandes cantidades de datos, incluso si los datos no son sensibles. Técnicamente, las URLs (y por lo tanto las variables GET) puede tener una longitud ilimitada. Sin embargo, debido a que muchos navegadores limitan cuánta cantidad de espacio puede tener una URL, GET se considera generalmente adecuada sólo para solicitudes relativamente cortas.