Métodos GET vs POST del HTTP

Documentos relacionados
Desarrollo y servicios web

Desarrollo y servicios web

De esta manera, cuando el usuario rellena un campo cómo el siguiente... <input type="text" name="telefono"> </form>

FORMULARIOS HTML. BOTONES: ENVÍO SUBMIT, RESTABLECIMIENTO RESET, IMAGEN Y CONTENIDO (BUTTON). (CU00724B)

ENVÍO DE DATOS DE UN FORMULARIO CON PHP. MÉTODOS GET Y POST. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00832B)

DAWeb práctica 11, día dos de mayo de 2018

Slarrauri.com Servicios Web Configuración de Paginas Facebook

Aplicaciones Web Mg. Abril Saire Peralta

Desarrollo y servicios web

REQUEST EN PHP. DIFERENCIAS Y VENTAJAS E INCONVENIENTES ENTRE GET, POST Y REQUEST. EJERCICIOS RESUELTOS Y EJEMPLOS. (CU00835B)

Desarrollo y servicios web

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

hipervinculos La página que rescata el valor pasado como parámetro es la siguiente: <html> <head> <title>problema</title> </head> <body> <?

Localizar direcciones en Google Maps con PHP

JavaScript: Introducción

PRACTICA JSP SEMANA 2

APRENDE A CREAR UNA PÁGINA WEB CON HTML

COMO AGREGAR AUDIOS USANDO EL EDITOR

DESCARGA E INSTALACIÓN MOZILLA FIREFOX 5.0

Secciones. Las Secciones agrupan Páginas. Están azul. Al hacer click despliegan los títulos de las Páginas.

Formularios en HTML 09/02/2015. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos

ELECTIVA EVALUACION FINAL

Curso de PHP Modulo 7 Creando Una Base de Datos y accediendo a ella R-Luis

Formularios en HTML. Grupo de Ingeniería del Software. Departamento de Lenguajes y Sistemas Informáticos. October 11

MANUAL DE USUARIO Formularios de Adquisición de Material Bibliográfico

Tema 5. APIs y Servicios web

Qué es PHP? Modelo Cliente - Servidor con PHP. PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor.

CÓMO INICIAR UNA SESIÓN DE CONTROL REMOTO BAJO DEMANDA

Proyecto: Buscador de Películas usando XQuery y exist

QUÉ ES Y PARA QUÉ SIRVE AJAX. DIFERENCIA CON JAVASCRIPT. VENTAJAS E INCONVENIENTES. (CU01204F)

Página Web Biblioteca

Cliente HTTP : Usando Telnet

2- Formularios y JavaScript Course: Developing web- based applica=ons

SISTEMA ADMINISTRATIVO DE CORRESPONDENCIA Y ARCHIVOS

Recomendamos para una correcta visualización de las imágenes utilizar como navegador predeterminado FIREFOX Versiones de 17.0 en adelante.

INSERCIÓN DE UN REGISTRO CON PHP Y MYSQL

Acceso a datos desde PHP (avanzado) Múltiples submits a PHP, control, gestión de errores, visualización, jquery, datatables, AJAX

Circuito de Registración... 2 Circuito de recuperación de clave... 5 Circuito de Ingreso (login)... 7

Guía de Usuario de Registros FileBRIDGE Gestión de inventario impresa

MANUAL DE POSTULACIÓN

MANUAL DEL ESTUDIANTE

PHP Avanzado - Listas enlazadas dinámicas -

MANUAL USO CUENTAS PERSONALES ASOCIADAS/OS AEIHM

Angular es un framework, diseñado por Google, de tipo MVW (Model View Whatever) para el frontend.

Unidad Didáctica 2 GENERACIÓN DE DOCUMENTOS WEB CON GUIONES DE SERVIDOR

MODULO ENSAYO DE POTENCIA MANUAL DE USUARIO AGENTES. Preparado por : DEPARTAMENTO DE TECNOLOGIA DE

PROCEDIMIENTO PARA ASIGNAR RETENCIÓN

Manual: Blog. Crear un artículo. Editar un artículo. Publicar y despublicar artículos. Introducir un video. Gestionar Comentarios

Curso de Java Java para Web

Qué es un grupo. Todo sobre los grupos de Nexus Esade y qué puedes hacer en ellos.

Attr(nombre de la propiedad), attr(nombre propiedad,valor), removeattr(nombre de propiedad)

Construcción de formularios en HTML. Formularios. Bases de Datos 2012/2013. Luis Valencia Cabrera

PHP y MySQL. Indice: - Envia de datos de formulario - Método de envio - La variable de interprete - Envio de archivo - Propiedades

Aplicaciones Web. Aplicaciones Distribuidas

Actualización del Cliente IFI

Escribiendo el HTML. Un formulario se declara entre estos dos tags:

Práctica. Edición de mapas conceptuales: CmapTool

Info64.org. Servidor de resultados para el uso con Vega. 1 Términos de uso y condiciones de info64.org. 2 Uso del servidor de resultados

Enviando parámetros al servidor

DESCARGAR E INSTALAR EL NAVEGADOR. VENTAJAS DE GOOGLE CHROME. FIREFOX, TAMBIÉN ENTRE LOS MEJORES (CU00710B)

COMO USAR PLATAFORMA DEL SISTEMA DIGITAL PERÚ EDUCA

jquery y Ajax 07/04/2017 Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos jquery y AJAX

MANUAL DEL USUARIO PARA EL APLICATIVO DEL SIBOL BOLSA MERCANTIL DE COLOMBIA

Transcripción:

Métodos GET vs POST del HTTP Entendiendo el concepto de GET y POST Muchas veces tenemos una idea equivocada sobre la utilización de GET y POST. Tendemos a entender que cuando doy click a un link eso es GET y cuando envío un formulario es POST. Mucho peor, solemos pensar que enviando peticiones POST los datos viajan seguros por no ir como parte de la URL como lo hace GET. Hay un error en este concepto que considero que cuando empezamos a aprender a usar tecnologías Web como por ejemplo PHP es entendible pero que a medida que vamos madurando debemos darnos cuenta que GET y POST no son la diferencia entre links y formularios. Se suele prestar a confusión ya que tanto GET como POST son métodos del protocolo HTTP el cual está compuesto por un envío al servidor conocido como petición (request) y una respuesta a dicha solicitud (response). Tanto GET como POST, justamente por ser métodos ambos de HTTP, ejecutan un request y response, y a mi criterio esto suele ser parte de la confusión sobre los objetivos reales de ambos métodos.

Redefinamos los conceptos El concepto GET es obtener información del servidor. Traer datos que están en el servidor, ya sea en un archivo o base de datos, al cliente. Independientemente de que para eso tengamos que enviar (request) algún dato que será procesado para luego devolver la respuesta (response) que esperamos, como por ejemplo un identificador para obtener una noticia de la base de datos. POST sin embargo es enviar información desde el cliente para que sea procesada y actualice o agregue información en el servidor, como sería la carga o actualización en sí de una noticia. Cuando enviamos (request) datos a través de un formulario, estos son procesados y luego a través de una redirección por ejemplo devolvemos (response) alguna página con información. Ambos métodos solicitan una respuesta del servidor y ahí es donde parecen que los conceptos son iguales ya que con ambos se podría lograr los mismos objetivos. Yo podría, aunque estaría mal, enviar por GET ciertos datos en la URL y actualizar o insertar información en mi base de datos, pero eso le correspondería al método POST. De la misma manera podría solicitar una página diferente por medio de POST y simplemente mostrarla como respuesta, aunque eso debería ser a través de una llamada GET. Las llamadas GET pueden ser cacheadas (historial del navegador), indexadas por buscadores, agregar los enlaces a nuestros favoritos o hasta pasar una url completa a otra persona para que directamente ingrese a esa página. Con el método POST sin embargo no se puede hacer esto. Generalmente usamos links para ejecutar llamadas GET ya que la idea del link es simplemente solicitar una información (página) al servidor y que sea devuelta como una respuesta. Mientras usamos formularios para actualizar datos de productos, clientes, noticias, etc, también teniendo en cuenta que por el método POST también se puede enviar mucha más cantidad de datos que por GET.

Para entender finalmente la diferencia voy a darles un caso de análisis. Supongamos que tenemos en nuestro sitio ecommerce un listado de productos con un link que agregue ese producto al carrito de compras. Si hacemos que ese link ejecute el método GET, como generalmente lo usamos, usaríamos una URL parecida a esta: www.misitio.com/agregar_item_carrito.php?id=1. Al ser una llamada GET, Google podría indexar esa URL y podría aparecer en el buscador al buscar la palabra carrito. Cuando una persona le diera click automáticamente se ejecutaría esa página y agregaría el item con id 1 al carrito del sitio, lo cual les puedo asegurar que no es la idea ya que el visitante al buscar carrito debería querer simplemente entrar al sitio y no agregar un ítem que ni siquiera sabe cual es. Por lo tanto vemos que para este caso, por más que usemos un link, deberíamos de usar una llamada al método POST por ejemplo como lo usa el framework Symfony así:? 1 2 3 <a onclick="f = document.createelement('form'); document.body.appendchild(f); f.method = 'POST'; f.action = this.href; f.submit();return false;" href="agregar_item_carrito.php?id=1">agregar al carrito</a> Lo que hace este link es muy sencillo, por medio del evento onclick de JavaScript, crea dinámicamente un formulario, le dice que será POST (ya que por defecto sería GET), le asigna la URL del enlace al action del form, envía el formulario y retorna false para no ejecutar el link en sí. Para hacer esto con Symfony simplemente usamos el helper link_to agregando la opción post=true:? 1 <?php echo link_to('agregar al carrito', 'agregar_item_carrito.php?id=1', 'post=true Otro ejemplo sencillo sería cuando en un administrador de noticias tenemos un listado de las noticias con un link eliminar para borrarlas una por una (situación muy común en sistemas Web). Deberíamos de hacer esta petición usando POST para no permitir, por seguridad, que esa URL creada sea indexada, enviada a otra persona, guardada en favoritos, ni mucho menos ejecutada por culpa del botón atrás del navegador ya que quedaría cacheada en el historial. Demos un ejemplo opuesto. Hay casos en los que los formularios de búsquedas al ser enviados por POST van a la página de resultados pero

como estas llamadas no son cacheadas en el historial del navegador, no podemos volver usando la tecla atrás del navegador por lo que se suele dejar como llamadas GET a fin de ser cacheadas. Esto lo hacemos simplemente poniendo en el method del form la palabra get en lugar de post. Espero que con esto se haya entendido la diferencia real entre los métodos GET y POST del protocolo HTTP y que cuando vayamos a utilizar un link o un formulario nos detengamos a pensar dos veces cual método es el más apropiado para no arriesgar la seguridad ni la consistencia del sitio Ejemplo por el método GET 1. Llamar este archivo como 1.php y subirlo al hosting <html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Formulario por GET </H1> <FORM ACTION="procesa2.phtml" METHOD="GET"> Introduzca su nombre:<input TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<input TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html> 2. Crear el archivo procesa2.phtml 3. El archivo phtml es una extensión de html que maneja el lenguaje Php usando html como conector del servidor.

<html> <head> <title>ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</h1> El nombre que ha introducido por GET es: <?php echo $_GET['nombre']," ",$_GET['apellidos']?><br> El nombre que ha introducido por POST es: <?php echo $_POST['nombre']," ",$_POST['apellidos']?> <br> </body> </html> 4. Método Post 5. El archivo por el método post lo vamos a llamar 2.php <html> <head> <title>ejemplo de Post</title> </head> <body> <H1>Ejemplo de procesado de formularios</h1> <FORM ACTION="procesa2.phtml" METHOD="POST"> Introduzca su nombre:<input TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<input TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Revisar la siguiente pagina donde se explican varios tipos de funcionamiento de los métodospost y GET https://www.uv.es/jac/guia/cgi.htm desde su hosting 1. Genere un formulario que introduzca una contraseña y se la retorne luego por GET y POST. 2. Genere un formulario que me permita ingresar los datos para la inscripción a una biblioteca y luego me los muestre usando el método GET 3. Realice un formulario con botones de radio que me determinen cual sistema operativo usa mas (Linux Windows Android etc) usando POST