Protocolo HTTP HTTP HTTP / Mar 2005 () HTTP HTTP - 1 1 / 23 Historia 1974 La primera aparición del término INTERNET 1976 UUCP (Unix to Unix copy) 1977 Especifación de protocolo de correo 1983 El primer DNS () HTTP HTTP - 1 2 / 23 Historia En los 80 los protocolos que se usan son: TELNET FTP File Transfer Protocol NNTP Network News Transfer Protocol SMTP Simple Mail Transfer Protocol () HTTP HTTP - 1 3 / 23 Historia 1990 Se usa un sistema de hipertexto en el CERN 1994 Se establece el W3 consortium http://www.w3.org 1995 HTML 2.0 (con ’forms’) 1999 HTML 4.01 (última versión) 2000 XHTML () HTTP HTTP - 1 4 / 23 Cliente-Servidor En Internet muchos programas funcionan en parejas Cliente-Servidor Cliente Proactivo Requiere enador del usuario de http: Firefox, Explorer, lynx Toma la iniciativas de comunicación información Maneja la interface de usario Servidor de http: Apache, monkey Reactivo Responde a los requerimientos del cliente Responde Ordenador remoto Resuelve las consultas de información () HTTP HTTP - 1 5 / 23 HTTP Hiper Text Transfer Procotol http://www.google.com/index.html El cliente envia a www.google.com (IP: 216.239.57.100) GET /index.html HTTP/1.1 Host: www.google.com Accept: text/html Accept: */* User-Agent: Mozilla 6.1 (* linea en blanco *) () HTTP HTTP - 1 7 / 23 HTTP: Hiper Text Transfer Procotol El servidor responde: HTTP/1.1 200 OK Date: Thursday, 06-Mar-03 15:00:00 GMT Server: Apache 1.3 ... Content-length: 2584 Content-type: text/html (*linea en blanco *) <html><head> ...</html> () HTTP HTTP - 1 9 / 23 CGI: Common Gateway Interface En http también está previsto el paso de información del Cliente al Servidor → El cliente manda parejas (parámetro,valor) a un archivo ejecutable CGI → El servidor a traves de la interface CGI manda los parámetros al ejecutable → El ejecutable comunica la salida (a través de CGI) al servidor → El servidor manda la salida al cliente () HTTP HTTP - 1 10 / 23 CGI: Paso de parámetros en GET GET /search?q=Bush http://www.google.com/search?q=Bush Mas de un parametro: http://www.google.com/search?hl=es&q=Bush () HTTP HTTP - 1 12 / 23 CGI: Paso de parámetros en GET No se puede poner cualquier caracter en un URL http://www.google.com/search?hl=es&q=%22Bush%20es%20un para "Bush es un" " 0x22 Espacio 0x20 () HTTP HTTP - 1 14 / 23 CGI: Paso de parámetros en PUT PUT /search HTTP/1.1 Host: www.google.com User-Agent: Mozilla 6.1 (* linea en blanco *) hl=es q=Bush () HTTP HTTP - 1 16 / 23 Common Gateway Interface 1 El servidor pone en la variable de entorno QUERY_STRING ’hl=es&q= %22Bush %20es %20un %22’ 2 Ejecuta ’search’ 3 Recoge la salida estandar de search 4 Completa las cabeceras del HTTP y se la remite al cliente () HTTP HTTP - 1 17 / 23 Código: Libreria CGI #!/usr/bin/perl use strict; use CGI qw(param); use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html; charset=ISO-8859-1\n\n if (param()) { Responde (param("test")); } else { Manda_Formulario (); } exit; () HTTP HTTP - 1 19 / 23 Código: Formulario sub Formulario { my $cgi=$ENV{’SCRIPT_NAME’}; print<<ETI; <html> <head><title> Prueba </title></head> <body> <p> Formulario </p> <form action=$cgi method="GET"> <input type="text" name="test"> </form> </body> </html> ETI } () HTTP HTTP - 1 21 / 23 Código: Responde sub Responde { my $res = shift; my $cgi=$ENV{’SCRIPT_NAME’}; print<<ETI; <html> <head><title> Respuesta </title></head> <body> <p> Has tecleado : $res </p> <form action=$cgi method="GET"> <input type="text" name="test"> </form> </body> </html> ETI } () HTTP HTTP - 1 23 / 23