1
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Programación Web Tema 1: Protocolo HTTP
Miguel Ángel Manso Emerson Castañeda
ETSI en Topografía, Geodesia y Cartografía - UPM
Basado en CS – 328 (Dick Steflik)
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
HTTP
• HyperText Transport Protocol
• Lenguaje de la Web
– Protocolo usado para comunicar clientes y servidores
• Protocolo orientado a conexión (TCP) y el puerto por defecto es (80)
• RFC 1945
2
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
¿En qué consiste el protocolo?
• Conexión.- establecimiento de una conexión cliente-servidor. Usualmente puerto por defecto (80) aunque pueden usarse otros no reservados
• Solicitud.- envío por parte del cliente de un mensaje de solicitud al servidor (GET, POST, HEAD, ..)
• Respuesta.- envío por parte del servidor de una respuesta al cliente
• Cierre.- fin de la conexión por parte del cliente y el servidor
HTTP es un protocolo sin estado es decir que no guarda
ninguna información sobre conexiones anteriores
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
HTTP - URLs
• URL
– Uniform Resource Locator
• protocol (http, ftp, news)
• host name (name.domain name)
• port (usually 80)
• directory path to the resource
• resource name
– http://www.myplace.com/www/index.html
– http://www.myplace.com:80/cgi-bin/t.exe
3
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
HTTP - methods • Los métodos que ofrece el protocolo son: Get,
Post, Head, Put, Delete, Options, Trace, Connect – GET (http://xx/pp/serv?par1=val1&par2=val2)
• Recupera un recurso de un servidor – Petición de página web sencilla
– Ejecutar un programa CGI
– Ejecutar un CGI con parámetros en la URL
– POST • Método preferido para procesar formularios
• También para ejecutar programas CGI
• Método para parametrizar la entrada del sistema (SysIn)
• Más seguro y privado
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
HTTP - methods
– HEAD
• Pide el estado de la URLs (sólo las cabeceras)
• Se utiliza para gestionar las URL condicionales y poder manejar esquemas que mejoran el funcionamiento (used for conditional URL handling for performance enhancement schemes) – Obtiene el recurso de la URL si no existe una copia local o si
ésta es muy antigua respecto a los datos del servidor
4
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Paquetes de consulta en HTTP
• Se trata de cabeceras del protocolo HTTP – las cabeceras están ocultas en los visores de
páginas web
– contienen: • content type / mime type (tipo: contenido codificación)
• content length (longitud)
• user agent - browser issuing request (tipo de cliente)
• content types user agent can handle (tipos de contenidos que el cliente puede manejar)
• y la URL
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
• Preceden a las peticiones HTTP
• Las cabeceras finalizan con un salto de línea
• Campos de la cabecera:
– From -- Accept
– Accept-Encoding -- Accept Language
– Referer -- Authorization
– Charge-To -- If-Modified-Since
– Pragma
Paquetes de consulta en HTTP
5
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
From:
• In internet mail format, the requesting user
• Does not have to correspond to requesting host name (might be a proxy)
• should be a valid e-mail address
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Accept: (permite establecer negociación)
• Lista de esquemas que acepta el cliente – <field> = Accept: <entry> * [,<entry>]
– <entry> = <content type> *[;<param>]
– <param> = <attr> = <float>
– <attr> = q / mxs / mxb
– <float> = <ANSI-C floating point > – Accept: text/html
– Accept: audio/basic q-1
– if no Accept is found; plain/text is assumed
– Puede usar caracteres comodín (*)
6
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Accept-Encoding
• Similar a Accept, para las codificaciones
• Ejemplo:
– Accept-Encoding: x-compress;x-zip
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
User-Agent
• Producto software usado por el cliente • <field> = User-Agent: <product> • <product> = <word> [/<version>] • <version> = <word> • Ejemplos:
– User-Agent: IBM WebExplorer DLL /v960311 – Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13
– Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13
7
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Referer
• Para que los servidores sepan de qué página procede la petición URL
• Esto permite que los servidores realicen auditoría en relación al lugar del que han obtenido el link de acceso actual, poder analizar enlaces rotos, etc.
• Ejemplo
– Referer: http:/www.w3.com/xxx.html
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Authorization:
• Para esquemas de autentificación con contraseñas
• Ejemplos:
– Authorization: user fred:mypassword
– Authorization: kerberos kerberosparameters
8
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Charge-To:
• Información relativa a quien se ha de realizar el cargo (cobro) por una operación
• Depende del sistema de cargos/cobros
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Pragma:
• Equivalente en formato a accept
• Destinado para servidores
• Los proxy deben de ser transparentes, aunque lo usan
• Solo el pragma currently indica que no es cacheable; los proxy deben obtener el recurso desde el servidor y no desde la cache
9
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Modified-Since:
• Usado con el método GET para realizar peticiones condicionadas a una fecha de modificación
• Si el recurso no ha sido modificado desde la fecha especificada, el servidor retorna una cabecera con el código 304 en vez de retornar el recurso – En éstos casos el cliente puede mostrar la versión
cacheada
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Cabecera de Estado (Status Header)
• Código que retorna el servidor
• “HTTP/1.0 sp code”
• Códigos:
– 1xx - reserved for future use
– 2xx - successful, understood and accepted
– 3xx - further action needed to complete
– 4xx - bad syntax in client request
– 5xx - server can’t fulfill good request
10
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Ejemplo de petición
GET / HTTP/1.1 • Host: www.24x7linux.com • User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.2b) Gecko/20021016 • Accept:text/xml,application/xml,application/xhtml+x
ml,text/html;q=0.9, text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2, text/css,*/*;q=0.1
• Accept-Language: es-es, en-us;q=0.66, en;q=0.33 • Accept-Encoding: gzip, deflate, compress;q=0.9 • Accept-Charset: ISO-8859-15, utf-8;q=0.66, *;q=0.66 • Keep-Alive: 300 • Connection: keep-alive
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
HTTP Response Headers
• Status Header
• Entity – Content-Encoding:
– Content-Length:
– Content-Type:
– Expires:
– Last-Modified:
– extension-header
• Server
11
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Ejemplo de respuesta 1
HTTP/1.1 200 OK • Date: Sun, 10 Nov 2002 22:50:55 GMT
• Server: Apache/1.3.26 (Unix) mod_bwlimited/1.0 PHP/4.2.2
mod_log_bytes/0.3 FrontPage/5.0.2.2510 mod_ssl/2.8.9 OpenSSL/0.9.6b
• Content-Type: text/html • Age: 130
• Connection: close
• <-- archivo index.html que contiene la página principal del sitio -->
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Ejemplo de respuesta 2
HTTP/1.1 200 OK • Date: Sun, 10 Nov 2002 23:15:31 GMT • Server: Apache/1.3.26 (Unix) mod_bwlimited/1.0
PHP/4.2.2 mod_log_bytes/0.3 FrontPage/5.0.2.2510 mod_ssl/2.8.9 OpenSSL/0.9.6b • Last-Modified: Fri, 01 Nov 2002 12:23:38 GMT • ETag: "23c32f-171cb-3dc2724a" • Accept-Ranges: bytes • Content-Length: 94667 • Content-Type: image/png • Age: 131
12
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Códigos de Estado
• 100 Continua • 101 Cambio de protocolo • 200 OK • 201 Creado • 202 Aceptado • 203 Información no oficial • 204 Sin Contenido • 205 Contenido para reset • 206 Contenido parcial • 300 Múltiples posibilidades • 301 Mudado permanentemente • 302 Encontrado • 303 Vea otros • 304 No modificado • 305 Utilice un proxy • 307 Redirección temporal • 400 Solicitud incorrecta • 401 No autorizado • 402 Pago requerido • 403 Prohibido
• 404 No encontrado • 405 Método no permitido • 406 No aceptable • 407 Proxy requerido • 408 Tiempo de espera agotado • 409 Conflicto • 410 No mapas disponible • 411 Requiere longitud • 412 Falló precondición • 413 Entidad de solicitud demasiado larga • 414 URI de solicitud demasiado largo • 415 Tipo de medio no soportado • 416 Rango solicitado no disponible • 417 Falló expectativa • 500 Error interno • 501 No implementado • 502 Pasarela incorrecta • 503 Servicio no disponible • 504 Tiempo de espera de la pasarela agotado • 505 Versión de HTTP no soportada
Universidad Politécnica de Madrid Emerson Castañeda/Miguel Ángel Manso
Herramienta para ejercitar: • addons http resource test para Firefox
– (https://addons.mozilla.org/es-es/firefox/addon/http-resource-test/)