1 / 98

HTTP, CGI, Applets, Servlets y SOAP

HTTP, CGI, Applets, Servlets y SOAP. Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero M. Cristina 01-34234 Teja Carolina 01-34483 . Aplicaciones de Internet. World Wide Web.

mimir
Download Presentation

HTTP, CGI, Applets, Servlets y SOAP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HTTP, CGI, Applets, Servlets y SOAP Sistemas de Operación II CI-4821 Sep-Dic 2005 Abreu Román 97-29181 García Irene 01-33903 Osers Pablo 01-34232 Otero M. Cristina 01-34234 Teja Carolina 01-34483

  2. Aplicaciones de Internet

  3. World Wide Web • Es un sistema de hipertexto que funciona sobre Internet. • Nació gracias a Tim Berners-Lee en 1990. • Combina tres tecnologías: • Documentos hipertexto. • Recuperación de información a través de la red. • SGML (Lenguaje Estandarizado de Marcado General).

  4. HTML (Hipertext Markup Language) • Es un lenguaje de marcas diseñado para estructurar textos y presentarlos en forma de hipertexto. • Fue definido por Tim Berners-Lee y luego desarrollado por la IETF. • Está basado en SGML. • Las etiquetas son breves instrucciones de comienzo y final que determinan la forma como aparece el texto y las imágenes en el navegador.

  5. HTML • Ejemplo <html> <head> <title>Ejemplo de una p&aacute;gina web</title> </head> <body> <center> <h1>Mi p&aacute;gina principal</h1> <img src=“/imágenes/miFoto.gif”> <a href=“/doc.miCV.html”>Mi curriculum vitae</a> </center> </body> </html>

  6. XML (Extensible Markup Language) • Es un lenguaje de marcas cuyo propósito es facilitar el compartir datos a través de diferentes sistemas. • Es desarrollado por el World Wide Web Consortium (W3C). • Se basa en SGML. • Se utiliza en protocolos tales como SOAP para llamadas a procedimientos remotos basados en la web.

  7. XML • Ejemplo <mensaje> <para> tu@tuDireccion.com</para> <de>yo@miDireccion.com</de> <tema> Esto es un mensaje</tema> <texto> ¡Hola mundo! </texto> </mensaje>

  8. HTTP (Hiper Text Trnasfer Protocol) • Es un protocolo orientado a conexión, sin estado y de petición-respuesta. • Está basado en el modelo cliente-servidor. • Cada petición y cada respuesta están compuestas por las siguientes partes: • La línea de petición/respuesta. • Una sección de cabecera. • Una línea en blanco. • El cuerpo.

  9. HTTP • La petición del cliente Formato: <método HTTP><espacio><URI solicitado><espacio><especificación del protocolo>\r\n Método HTTP: • GET  para solicitar un URL específico • HEAD  para solicitar la cabecera del servidor • POST  para enviar datos al servidor • PUT  para subir archivos a un URI en el servidor web

  10. HTTP • La petición del cliente URI solicitado: /<nombre de directorio>.../<nombre de directorio>/<nombre de fichero> Especificación del protocolo: compuesto por el nombre y la versión del protocolo usado por el cliente.

  11. HTTP • Cabecera de la petición Formato: <clave>: <valor>\r\n Claves: • Accept  tipo de contenido aceptado por el cliente • User-Agent  tipo de navegador • Connection  para especificar <<Keep-Alive>> • Host  nombre de la máquina servidor

  12. HTTP • Ejemplo GET /invest/default.html HTTP/1.0 Accept: text/plain Accept: text/html Accept: audio/* Accept: video/mpeg .. .. .. User-Agent: Mozilla/3.0 (WinNT; I) Línea en blanco

  13. HTTP • La respuesta del servidor 1. Línea de estado. 2. Una sección de cabecera. 3. Una línea en blanco. 4. El cuerpo.

  14. HTTP • La línea de estado Formato: <protocolo><espacio><código de estado><espacio><descripción>\r\n Códigos de estado: • 100-199: Informativo • 200-299: Petición del cliente satisfactoria • 300-399: Petición del cliente redirigida • 400-499: Petición del cliente incompleta • 500-599: Errores del servidor

  15. HTTP • Ejemplos • HTTP/1.0 200 Ok • HTTP/1.1 403 Forbidden • HTTP/1.0 404 Not Found • HTTP/1.0 503 Service Unavailable

  16. HTTP • Cabecera de la respuesta Formato: <clave>: <valor>\r\n - Líneas de respuesta: Age: segundos Location: URI Retry-After: fecha|segundos Server: cadena WWW-authenticate: método de autenticación

  17. HTTP • Cabecera de la respuesta - Líneas de entidad: Content-Encoding Content-Length Content-Type: tipo/subtipo Expires: fecha Last-Modified: fecha

  18. HTTP • Cuerpo de la respuesta Date: Mon, 30 Oct 2002 18:52:08 GMT Server: Apache/1.3.9 (Unix) ApacheJServ/1.0 Last-Modified: Mon, 17 June 2001 16:45:13 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 1255 Connection: close Content-Type: text/html <html> … </html>

  19. HTTP • Tipos de contenido y MIME (Multipurpose Internet Mail Extension) Es un protocolo para especificar el tipo de contenido.

  20. HTTP • Un cliente sencillo public class ClienteHTTP { public static void main (…) { … MiSocketStream mi socket = new MiSocketStream( maquina, puerto); … miSocket.enviarMensaje(peticion); String respuesta = miSocket.recibirMensaje(); … } }

  21. HTTP • Un cliente sencillo escrito con la clase URL public class navegadorURL { public static void main (…) { … URL elURL = new URL(“http”, maquina, puerto, cadenaURL); inputStream enStream = elURL.openStream(); BufferedReader entrada = new BufferedReader ( new InputStreamReader(enStream)); String respuesta = entrada.readLine(); … while(){ respuesta = entrada.readLine(); } } }

  22. Contenido web dinámico Máquina con cliente web Máquina con servidor web Servidor web Cliente web <<id=12345>> <<ingresos=30000>> <<id = 12345>> <<ingresos=30000>> Sistema de Base de datos

  23. CommonGatewayInterface

  24. CGI Common Gateway Interface Definición • Protocolo que proporciona una interfaz o pasarela entre un servidor de información y un proceso externo. • Utilizando el protocolo CGI, un cliente web puede especificar un programa, conocido como Script CGI, como objeto web de destino de una petición HTTP.

  25. Script CGI Servidor HTTP Cliente Web petición de hola.html contenido de hola.html petición de hola.cgi datos, si hay, del cliente respuesta del servidor, incluyendo páginas generadas dinámicamente Ejemplo de una aplicación CGI

  26. CGI Common Gateway Interface Código de “hola.html” <!Ejemplo de página web que invoca a un CGI> <HTML> <HEAD> … <H1>Esta página muestra el uso de un script web</H1> <HR> <FORM METHOD=“post” ACTION=“hola.cgi”> <HR> Presione <input type=“submit” value=“”aquí> para enviar su petición </FORM> </HR> …

  27. CGI Common Gateway Interface Código de “hola.cgi” * Este programa es un script CGI que genera la salida * de una página web. #include <stdio.h> main(int argc, char *argv[]) { printf(“Content-type:text/html%c%c”, 10, 10); printf(“<font color = blue>”); printf(“<H1>Hola mundo</H1>”); printf(“</font>”); }

  28. Formulario Web Características • Proporciona una interfaz gráfica de usuario que permite al usuario introducir datos. • Cuando el usuario pulsa el botón de envío, invoca la ejecución de un programa externo en la máquina del servidor web.

  29. Ejemplo de Formulario

  30. Código del Formulario <html> <head> <title>Un ejemplo de formulario sencillo</title> </head> <body> <H1>Esto es un formulario sencillo</H1> <form method="get" action="formulario.cgi"> <h2>Cuestionario:</h2> Introduce tu nombre: <input name="nombre"><p> Cual es tu pregunta?: <input name="pregunta"><p> … … Presiona <input type="submit" name="sBoton" value="aqui"> para enviar </form> </body> </html> Formulario Web

  31. Formulario Web • Action=<URL> es una cadena de caracteres que contiene el URL absoluto o relativo del programa externo que será iniciado por el servidor web al enviar el formulario. • Method=<una palabra reservada>, donde la palabra reservada es el nombre del método, POST o GET, que especifica la forma en la que el programa externo espera recibir los datos enviados por el usuario.

  32. Cadena de Interrogación • La colección de todos los datos de los elementos de entrada es una cadena de caracteres denominada cadena de interrogación (query string). • Ejemplo: nombre=Juan%20Nadie&pregunta=paz%20en%20mundo&color=azul&… • El empaquetado de los datos en la cadena de caracteres, incluyendo la codificación de los valores, la realiza el navegador.

  33. Procesamiento de la CadenaEnvío de la cadena al Servidor • EL método GET en los formularios • La cadena se transmite al servidor web en una petición HTTP con una línea de método GET. • El URI del objeto web solicitado por el cliente es especificado por la petición HTTP GET. • La cadena de interrogación se adjunta al final del URI, delimitándola por el carácter “?” • GET /cgi/hola.cgi?nombre=Juan%20Nadie&pregunta=… • El método POST en los formularios • La cadena de interrogación se transmite al servidor web en una cabecera HTTP con una línea de método POST. • La petición POST tiene un cuerpo de petición, que contiene el texto que se va a enviar al servidor.

  34. Procesamiento de la CadenaEnvío de la cadena al Servidor ... continuación • El método POST en los formularios • Utilizando este método, el URI del script CGI se especifica con la línea de petición POST, seguida por la cabecera de la petición, una línea en blanco y por último la cadena de interrogación. POST /cgi/hola.cgi HTTP/1.0 Accept: */* Connection: Kepp-Alive Host: miHost.algo.edu User-Agent: Generic nombre=Juan%20Nadie&pregunta=…

  35. Procesamiento de la CadenaEnvío de la cadena al programa externo • El método FORM GET • EL URI es adjuntado a la petición HTTP. • EL programa externo recibe el formulario codificado en una variable de entorno llamada QUERY_STRING. • EL programa recupera la cadena de interrogación de la variable de entorno. • El método FORM POST • EL navegador pasa la cadena en el cuerpo de la petición. • El programa externo recibe el formulario codificado por la entrada estándar. • La cadena de interrogación es decodificada y el programa externo hace uso de los valores de los parámetros durante la ejecución.

  36. Codificación y decodificación • Perl  biblioteca CGI-lib con la estructura de datos vector asociativo. • NCSA (National Center for Supercomputing Applications)  biblioteca de rutinas en C.

  37. Variables de Entorno usadas en CGI • Es un parámetro del entorno de trabajo de un usuario, en un computador. • CGI utiliza variables de entorno que son escritas por el servidor HTTP para pasar información sobre las peticiones a los programas externos. • Algunas de estas variables son: • REQUEST_METHOD: tipo de método con el que se ha realizado la petición. • QUERY_STRING: contiene la cadena de caracteres codificada. • CONTENT_TYPE: el tipo de contenido de los datos. • CONTENT_LENGTH: la longitud de la cadena de interrogación en número de bytes.

  38. Sesiones Web y Datos de Estado Script Web Script Web Servidor Web Navegador petición de formulario.html formulario.html id=12345 formulario1.cgi?id=12345 form2.html(dinámico) formulario2.cgi?compra=TV compra=TV formulario2.html, contenido «cliente 12345 tiene una TV en el carrito»

  39. Sesiones Web y Datos de Estado • Mecanismos del lado del servidor: • Se puede usar almacenamiento secundarios (ficheros o BD) en la máquina servidora como un repositorio para los datos de estado de la sesión. • Desventaja: sobrecarga involucrada y la necesidad de administración del repositorio para un gran número de sesiones concurrentes. • Mecanismos del lado del cliente: • Basado en pasar los datos de estado del script web al cliente, que a su vez pasa esos datos al siguiente script web. • Esta operación puede ser repetida durante toda la sesión web.

  40. Mecanismos de mantenimiento de sesión del lado del cliente

  41. Uso de campos ocultos • Elemento de tipo IMPUT en un formulario Web que se especifica con TYPE=HIDDEN y su valor debe de ser especificado en el atributo VALUE dentro del campo. • Es de fácil uso. • El cliente HTTP se convierte en un repositorio temporal de la información de estado. • Los datos de sesión se envían utilizando el mecanismo normal de transmisión de cadenas de interrogación. • Posee el riesgo de privacidad y seguridad, los datos de estado se transmiten como campos de un formulario sin proteger

  42. Ejemplo uso campo oculto Script web Script web Web Server Navegador Form2.cgi Form1.cgi Petición de formulario.html Formulario.html Form1.cgi?id=1234 id=1234 Form2.html (dinámico) contiene <input type=“HIDDEN” name=“id“ value=“1234”> Form2.cgi?id=1234&compra=tv id=1234&compra=tv “cliente 1234 tiene tv en carrito compra”

  43. Uso de cookies • Este esquema hace uso de una extensión del http básico que permite que una respuesta del servidor pueda contener información de estado que el cliente deberá almacenar en un objeto. • Las cookies se almacenan en la máquina cliente, de forma temporal o persistente. • Líneas de cabecera HTTP • Set-Cookie • Cookie

  44. Ejemplo uso cookies Script web Web Server Navegador Form1.cgi Petición de formulario.html Formulario.html Script web Form2.cgi Form1.cgi?id=1234 id=1234 Script web Form3.cgi Set-Cookie: id=1234 Form2.html (dinámico) id=1234 id=1234 Form2.cgi?nombre=Juan id=1234 Nombre=Juan Nombre=Juan Set-Cookie:nombre=Juan Form3.html (dinámico) id=1234 Form3.cgi?... nombre=Juan id=1234 nombre=Juan

  45. Línea de cabecera de respuesta: HTTP Set-Cookie Set-Cookie: NOMBRE=VALOR; expires=FECHA; path=CAMINO; domain=NOMBRE_DOMINIO; secure • Nombre: par nombre-valor. • Expires: especifica una fecha que define el tiempo de validez de una cookie. • Domain: establece el dominio de la cookie, para saber que cookies deben de ser enviadas a un servidor en particular. • Path: se utiliza para especificar el subconjunto de direcciones dentro de un dominio donde la cookie es válida. • Secure: si está marcada como segura, solo será transmitida si el canal de comunicación es seguro.

  46. Línea de cabecera de petición:HTTP cookie • Cuando se solicita un URL a un servidor, el navegador comparará el URI (Uniform Resource Identifier, identificador unificado de recursos) con todas las cookies almacenadas en el cliente. Si encuentra alguna cookie coincidente, se incluirá una línea con los pares nombre-valor de dichas cookies en la cabecera de petición http. Cookie: NOMBRE=VALOR; NOMBRE2=VALOR2; NOMBRE3=VALOR3 • El servidor extrae todos los valores y los sitúa en una variable de entorno HTTP_COOKIE

  47. Ejemplo de secuencia de transacciones • El cliente solicita un documento y recibe la siguiente respuesta: • Set-Cookie: CLIENTE=COYOTE; path=/ • Cuando el cliente solicita un URL en la ruta </>, envía: • Cookie: CLIENTE=COYOTE • El cliente recibe la siguiente respuesta: • Set-Cookie: NUMERO_PARTE=LANZACOHETES_01; path=/ • Cuando el cliente solicita un URL en la ruta </> del servidor, envia: • Cookie: NUMERO_PARTE=LANZACOHETES_01 • El cliente recibe la siguiente respuesta: • Set-Cookie: ENVIO=FEDEX; path=/area • Cuando el cliente solicita un URL en la ruta </> del servidor, envía: • Cookie: CLIENTE=COYOTE; NUMERO_PARTE=LANZACOHETES_01 • Cuando el cliente solicita un URL en la ruta </area>, envía: • Cookie: CLIENTE=COYOTE; NUMERO_PARTE=LANZACOHETES_01; ENVIO=FEDEX

  48. Privacidad de los datos y consideraciones de seguridad Controversia de las Cookies: • Las cookies pueden ser escritas en la máquina del usuario sin el conocimiento o aprobación explícita de él. • Aunque las cookies son de tamaño pequeño, su acumulación ocupa recursos del sistema. • Pueden ser utilizadas para recoger información personal de los usuario web sin su conocimiento. • Las cookies persistentes, almacenadas en carpetas fácilmente accesibles, pueden revelar información personal a usuarios que comparten un computador.

  49. Applets y Servlets

  50. Applets • Son clases de Java solicitadas por el navegador a un servidor web utilizando el protocolo http y ejecutadas a continuación por la máquina virtual de Java en el entorno del navegador del cliente. • Se coloca con etiquetas <applet></applet> dentro del código HTML. Cuando el navegador analiza la etiqueta applet lanza la petición al servidor que diga en la etiqueta o del cual se haya bajado la página, si el campo no esta lleno. • Una vez recibida la clase el navegador lo ejecuta con su JMV y muestra su resultado. Servidor HTTP Petición HTTP Applet Respuesta HTTP Cliente HTTP

More Related