protocol http

54
Máster Servicios Web Internet Servicios

Upload: juan-antonio-gil-martinez-abarca

Post on 23-Jan-2018

169 views

Category:

Internet


2 download

TRANSCRIPT

Page 1: Protocol HTTP

AISI

Máster Servicios Web

Internet Servicios

Page 2: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

Tecnologías Web - HTTP

Basada en el modelo Cliente-ServidorComunicación basada en TCP/IPElementos;

● Protocolo de aplicación: HTTP (TCP, 80/443)

● DNS (como mínimo en el cliente)● Cliente: accede a recurso remoto

● Su HW + S.O. + App cliente (navegador)● Servidor: posee el recurso

● Su HW + S.O. + App servidora (Apache,...)

Page 3: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

Arquitectura

Servidor WEB

Prot. Solic-Resp (HTTP)

Repr. Ext. Datos (MIME)

Gestión de petición-respuesta

ProtocolocomunicaciónTCP/IPS

OH

W NIC

Red de Comunicaciones

Navegador

TCP/IP

SO

HWNIC

Cliente Servidor

IDE

FS

VGA

I/O

HTTP

MIME

Gestión Pet-Resp

HDPORT

TECLADO

PANTALLA

HTTP

TCP/IP

TRAMAS

Page 4: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Es un protocolo de transporte para hipertexto• Petición / Respuesta• Basado en texto• Orientado a conexión• Sin sesión• URI:

esquema://servidor[:puerto]/recurso

Page 5: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

Modelo HTTP Básico

Servidor

HTML

Cliente ligeroNavegador

WebServidor

web

InternetTCP/IP

Cliente

HTTP

Pág. HTML

JPEGPág. HTML

GET /index.html HTTP/1.0

Método Recurso Versión Cabecera

TEXTO (MIME)

Principales métodos HTTP

Solicitar únicamente la cabeceraHEAD

Envía datos al servidorPOST

Solicitar contenidoGET

Envía contenido para almacénPUT

Ejemplo de solicitud HTTP

Accept: */*Connection: Keep-AliveUser-Agent: Generic

[línea en blanco]

Nombre=Juan&[email protected]

POST /cgi/miAplicacion.cgi HTTP/1.0

Cabecera

Cuerpo

Línea

Page 6: Protocol HTTP

Tecnología Web

Master en Servicios Web Servidores WebUniversidad de Alicante

HTTP

• Cada recurso web se transporta en una conexión distinta

Servidor Web Navegador

solicitud index.html

index.html

solicitud fondo.gif

fondo.gif

solicitud menu.jpg

menu.jpg

Page 7: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

MIME• Mime se utiliza para enviar datos no textuales (imágenes, videos,

sonido,…) como textual

MIMEContent-Type: image/pjpeg; name="Dibujo.JPG"Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAMAAwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDk2t7crM/m+QhjL28e4SFvnC7WIxggbjkgdOnzCoWcOkeI1QquCRnLHJOTk9eccYHA75JdbTy2d1FcwPtmicSRtgHawORwfcVFge/514D9m3yyk7dNO9+l/Tdvr5H7RCM1r+vy7H//2Q==

----8CFDA75A284D5A8033E016C87CBCE897--

.

8 bits8 bits 8 bits8 bits 8 bits8 bits

6 bits6 bits 6 bits6 bits 6 bits6 bits 6 bits6 bits

1 carácter1 carácter 1 carácter1 carácter 1 carácter1 carácter 1 carácter1 carácter

A-Z→26 caracteresa-z →26 caracteres0-9 →10 caracteres+ / →2 caracteres

Page 8: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Es un protocolo de transporte para hipertexto• Petición / Respuesta• Basado en texto• Orientado a conexión• Sin sesión

Page 9: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Sobre HTTP hay que distinguir qué escribe el cliente y qué servidor

• La estructura de la petición esMétodo recurso VERSION_HTTPCabecera generalesCabecera de peticiónCabecera de entidadLínea en blancoDatos de entidad

Page 10: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• La estructura de la respuesta es

VERSION_HTTP código_respuesta descripciónCabeceras generalesCabecera de respuesta Cabecera de entidadLínea en blancoRecurso de entidad(página HTML/JSON)

Page 11: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

telnet www.dtic.ua.es 80Trying www.dtic.ua.es...Connected to www.dtic.ua.esEscape character is '^]'.GET /index.html HTTP/1.0

+HTTP/1.1 200 OKDate: Thu, 06 Nov 2014 17:59:15 GMTServer: Apache/2.0.40 (Red Hat Linux)Last-Modified: Wed, 03 Nov 2004 13:01:02 GMTETag: "378029-902-3bd83f80"Accept-Ranges: bytesContent-Length: 256Connection: closeContent-Type: text/html; charset=ISO-8859-1

<html><head><title>Tecnología Informática y Computación</title></head>

<body background="fondo.gif">Hola a Todos<br><img src="menu.jpg"></body>

</html>

Se ha perdido la conexión con el host.

C:\> _

Línea de estadoCabecera

Contenido

Page 12: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Métodos: – GET, – HEAD, – POST, – PUT, – DELETE, – TRACE, OPTIONS, CONNECT– LINK, UNLINK, PATCH

Page 13: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• GET: Petición de documento• HEAD: Consulta de información (no entity-body)

– Las cabeceras = a las obtenidas con GET– Usos:

● Modificación tiempos (por caché)● Conocer el tamaño de documentos, tipo,...● Tipo de servidor

Page 14: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• POST: Sí entity-body y debería incluir una cabecera content-type

Page 15: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• PUT:Almacena entity-body en la URI indicada• DELETE: Borra• TRACE: permite a los programadores ver cómo se

modifica el mensaje del cliente a través de servidores proxy.

• , OPTIONS, CONNECT– LINK, UNLINK, PATCH

Page 16: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• PUT:Almacena entity-body en la URI indicada• PATCH: como put pero entity-body contiene solo las

diferencias con el recurso• DELETE: Borra• TRACE: permite a los programadores ver cómo se

modifica el mensaje del cliente a través de servidores proxy.

• LINK: establece relaciones entre recursos (sin entity-body, por lo que no se generan nuevos). La respuesta no es cacheable.

• UNLINK: quita las relaciones.

Page 17: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• OPTIONS Obtener información sobre qué métodos HTTP

están activos en el servidor web. • Además se utiliza, por ejemplo, por algunas API REST que

requieren una solicitud OPTIONS, CORS requiere solicitudes previas al vuelo, y así sucesivamente.

• Por lo tanto, definitivamente hay escenarios en los que se debe habilitar OPTIONS, pero el valor predeterminado debe estar "desactivado a menos que sea necesario".

Page 18: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Servicios RestFull: CRUD (Create Read Update Delete)• Content-Type: application/json;charset=utf-8

Page 19: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Hay 4 tipos de cabeceras:– Generales: para mostrar información general

como fechas, y son tanto para clientes (petición) como servidores (respuesta)

– Cabeceras de petición: sobre configuración del cliente y formatos deseados

Page 20: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Los otros 2:– De Respuesta: describe configuraciones del

servidor e información acerca de la URI– De entidad: describe formatos de los datos y

recursos. Usadas tanto por cliente como por servidor

Page 21: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Generales:– Cache-control: no-cache|max-age=sec– Date:formato– Connection: close|keep-alive– Pragma:no-cache– Transfer-Encoding:chunked– Upgrade:HTTP/2

Page 22: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Petición:– Accept:type/subtype– Accept-Charset: charset– Accept-Encondig:tipos (gzip)– Host: nombre:port– User-agent:navegador– Authorization: scheme credentials– Cookie: name=value

Page 23: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• Respuesta:– Location:URL– Server:string– Set-cookie: name=value options– WWW-authenticate: scheme realm

Page 24: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• De entidad (cont):– Content-type:type/subtype;charset– Expires:date– Last-Modified:date

Page 25: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• De entidad:– Allow:methods (en respuesta con 405)– Content-encoding: encoding (gzip)– Content-Language:languages– Content-length:n– Content-location: url– Content-MD5:md5digest

Page 26: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• De entidad (cont):– Content-type:type/subtype;charset– Expires:date– Last-Modified:date

Page 27: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Seguridad con cabeceras (I)

– X-Frame-Options: proteger contra los ataques de clickjacking. Sirve para prevenir que la página pueda ser abierta en un iframe. Los valores que puede tomar

● DENY: prohíbe cualquier intento● SAMEORIGIN: permite usar el contenido sólo

desde el propio dominio● ALLOW FROM: permite usar el contenido en las

URLs indicadas

Page 28: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Seguridad con cabeceras (II)

– X-Content-Type-Options: evitar que se cargue un archivo JS ó CSS con un MIME-Type diferente al declarado (nosniff)

– X-XSS-Protection: habilitar o no el filtro anti XSS de los navegadores Los valores que podemos establecer son:

● X-XSS-Protection: 1; mode=block Activado● X-XSS-Protection: 0; mode=block Desactivado

Page 29: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Seguridad con cabeceras (III)

– Strict-Transport-Security (HSTS): un servidor web declara a los navegadores compatibles que deben interactuar con ellos solamente mediante conexiones HTTP seguras (TLS/SSL) Previene la extracción de SSL en ataques man-in-the-middle

– Content-Security-Policy: evitar cross-site scripting (XSS), clickjacking y otros ataques de inyección de código. Permite definir el bloqueo a la carga de scripts, CSS e imágenes de dominios externos (http://cspisawesome.com/)

Page 30: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Seguridad con cabeceras (IV)

– Public-Key-Pins: el servidor le indica al navegador qué certificado debe esperar y que rechace cualquier otro. Ej:

public-Key-Pins: pin-sha256=”eZ2mT3Q9rS+P5WO3beF1Du9Jojk2oaO3eM0BYjl+uKk=”; pin-sha256=”2RvDQRJ3jUJaIvGRBMATMgSMrTecA3HXQXeUgRFKIcc=”; max-age=5184000; includeSubDomain

– Cada pin-* identifica un certificado de la cadena. Son hashes de la llave pública

Page 31: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Otras importantes, sobre todo, esquema CORS:

– Invocaciones de XMLHttpRequest API, servicios Rest,

– carga de recursos, imágenes, css, etc

– Texturas WebGL.

– Imágenes dibujadas en patrones usando drawImage.

Page 32: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• CORS (solicitud HTTP de origen cruzado)

• Solicitudes simples:– Origin

– Access-Control-Allow-Origin: <origin> | *

● Solicitudes Verificadas

– Access-Control-Allow-Methods: <method>[, <method>]*

– Access-Control-Allow-Headers: <field-name>[, <field-name>]*

● Solicitudes con credenciales

– Access-Control-Allow-Credentials: true | false

Page 33: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

Page 34: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP - Respuestas 1xx Mensajes de información

100 Continua101 Cambio de protocolo2xx Operación exitosa 200 Ok201 Creado202 Aceptado203 Información de otro srv204 Sin Contenido205 Contenido y reiniciar página206 Contenido parcial3xx Redirección hacia otro URL 300 Múlpiples posibilidades301 Mudado permanentemente302 Encontrado303 Véa otros304 No modificado305 Utilice un proxy307 Redirección temporal

Códigos de respuesta HTTP

4xx Error por parte del cliente 400 Solicitud incorrecta401 No autorizado402 Pago requerido403 Prohibido404 No encontrado405 Método no permitido406 No aceptable407 Proxy requerido408 Tiempo de espera agotado409 Conflicto410 No mpas disponible411 Requiere longitud412 Falló precondición413 Entidad de solicitud demasiado larga414 URI de solicitud demasiado largo415 Tipo de medio no soportado416 Rango solicitado no disponible417 Falló expectativa5xx Error por parte del servidor500 Error interno501 No implementado502 Pasarela incorrecta503 Servicio no disponible504 Tiempo de espera de la pasarela agotado505 Versión de HTTP no soportada

Page 35: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 10X: Respuestas informativas– 100 – Continue El navegador puede continuar realizando su petición (se utiliza para indicar

que la primera parte de la petición del navegador se ha recibido correctamente)

– 101 - Switching Protocols El servidor acepta el cambio de protocolo propuesto por el navegador (puede ser por ejemplo un cambio de HTTP 1.0 a HTTP 1.1)

– 102 - Processing (WebDAV - RFC 2518) El servidor está procesando la petición del navegador pero todavía no ha terminado (esto evita que el navegador piense que la petición se ha perdido cuando no recibe ninguna respuesta)

– 103 – Checkpoint Se va a reanudar una petición POST o PUT que fue abortada previamente

Page 36: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• 20X: Respuestas correctas (1)

– 200 – OK Respuesta estándar para peticiones correctas.

– 201 – Created La petición ha sido completada y ha resultado en la creación de un nuevo recurso.

– 202 – Accepted La petición ha sido aceptada para procesamiento, pero este no ha sido completado. La petición eventualmente pudiere no ser satisfecha, ya que podría ser no permitida o prohibida cuando el procesamiento tenga lugar.

– 203 - Non-Authoritative Information (desde HTTP/1.1) La petición se ha completado con éxito, pero su contenido no se ha obtenido de la fuente originalmente solicitada sino de otro servidor.

– 204 - No Content La petición se ha completado con éxito pero su respuesta no tiene ningún contenido (la respuesta sí que puede incluir información en sus cabeceras HTTP)

Page 37: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 20X: Respuestas correctas (2)– 205 - Reset Content La petición se ha completado con éxito, pero su respuesta no tiene

contenidos y además, el navegador tiene que inicializar la página desde la que se realizó la petición (este código es útil por ejemplo para páginas con formularios cuyo contenido debe borrarse después de que el usuario lo envíe).

– 206 - Partial Content La petición servirá parcialmente el contenido solicitado. Esta característica es utilizada por herramientas de descarga como wget para continuar la transferencia de descargas anteriormente interrumpidas, o para dividir una descarga y procesar las partes simultáneamente.

– 207 - Multi-Status (Multi-Status, WebDAV) El cuerpo del mensaje que sigue es un mensaje XML y puede contener algún número de códigos de respuesta separados, dependiendo de cuántas subpeticiones sean hechas.

– 208 - Already Reported (WebDAV) El listado de elementos DAV ya se notificó previamente, por lo que no se van a volver a listar.

Page 38: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 30X: Redirecciones: Respuestas con más acciones(1) , <5

• Si el método != de GET o HEAD, con interacción del usuario

– 300 - Multiple Choices Indica opciones múltiples para el URI que el cliente podría seguir. Esto podría ser utilizado, por ejemplo, para presentar distintas opciones de formato para vídeo, listar archivos con distintas extensiones o word sense desambiguación.

– 301 - Moved Permanently

– 302 – Found Se usa como 303, no como indica estándar (la frase descriptiva original fue "Moved Temporarily"), pero los navegadores populares lo implementaron como 303 See Other.

– 303 - See Other (desde HTTP/1.1) La respuesta a la petición puede ser encontrada bajo otra URI utilizando el método GET.

Page 39: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• 30X: Redirecciones (2)

– 304 - Not Modified Indica que la petición a la URL no ha sido modificada desde que fue requerida por última vez. Típicamente, el cliente HTTP provee un encabezado como If-Modified-Since para indicar una fecha y hora contra la cual el servidor pueda comparar. El uso de este encabezado ahorra ancho de banda y reprocesamiento tanto del servidor como del cliente.

– 305 - Use Proxy (desde HTTP/1.1) Muchos clientes HTTP (como Mozilla3 e Internet Explorer) no se apegan al estándar al procesar respuestas con este código, principalmente por motivos de seguridad.

– 306 - Switch Proxy Este código se utilizaba en las versiones antiguas de HTTP pero ya no se usa (aunque está reservado para usos futuros).2

– 307 - Temporary Redirect (desde HTTP/1.1) Se trata de una redirección que debería haber sido hecha con otra URI, sin embargo aún puede ser procesada con la URI proporcionada. En contraste con el código 303, el método de la petición no debería ser cambiado cuando el cliente repita la solicitud. Por ejemplo, una solicitud POST tiene que ser repetida utilizando otra petición POST.

– 308 - Permanent Redirect El recurso solicitado por el navegador se encuentra en otro lugar y este cambio es permanente. A diferencia del código 301, no se permite cambiar el método HTTP para la nueva petición (así por ejemplo, si envías un formulario a un recurso que ha cambiado de lugar, todo seguirá funcionando bien)

Page 40: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 40X: Respuestas de error (1)• Para casos en los cuales el cliente parece haber

errado la petición– 400 - Bad Request La solicitud contiene sintaxis errónea y no debería repetirse.

– 401 – Unauthorized Similar al 403 Forbidden, pero específicamente para su uso cuando la autentificación es posible pero ha fallado o aún no ha sido provista. Vea autenticación HTTP básica y Digest access authentication. Implica el uso de cabecera WWW-Authnticate.

– 402 - Payment Required La intención original era que este código pudiese ser usado como parte de alguna forma o esquema de Dinero electrónico o micropagos, pero eso no sucedió, y este código nunca se utilizó.

– 403 – Forbidden La solicitud fue legal, pero el servidor rehúsa responderla dado que el cliente no tiene los privilegios para hacerla. En contraste a un 401, la autenticación no es importante.

Page 41: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 40X: Respuestas de error (2)– 404 - Not Found

– 405 - Method Not Allowed

– 406 - Not Acceptable El servidor no es capaz de devolver los datos en ninguno de los formatos aceptados por el cliente, indicados por éste en la cabecera "Accept" de la petición.

– 407 - Proxy Authentication Required El navegador debe identificarse ante un proxy

– 408 - Request Timeout

– 409 – Conflict Indica que la solicitud no pudo ser procesada debido a un conflicto con el estado actual del recurso que esta identifica.

– 410 – Gone Indica que el recurso solicitado ya no está disponible y no lo estará de nuevo. Debería ser utilizado cuando un recurso ha sido quitado de forma permanente (si no es así, ¿qué código sería?)

Page 42: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 40X: Respuestas de error (3)– 411 - Length Required El servidor rechaza la petición del navegador porque no incluye la

cabecera Content-Length adecuada.2

– 412 - Precondition Failed El servidor no es capaz de cumplir con algunas de las condiciones impuestas por el navegador en su petición.

– 413 - Request Entity Too Large La petición del navegador es demasiado grande y por ese motivo el servidor no la procesa

– 414 - Request-URI Too Long La URI de la petición del navegador es demasiado grande y por ese motivo el servidor no la procesa.

– 415 - Unsupported Media Type La petición del navegador tiene un formato que no entiende el servidor y por eso no se procesa.

– 416 - Requested Range Not Satisfiable El cliente ha preguntado por una parte de un archivo, pero el servidor no puede proporcionar esa parte, por ejemplo, si el cliente preguntó por una parte de un archivo que está más allá de los límites del fin del archivo.

Page 43: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 40X: Respuestas de error (4)– 417 - Expectation Failed La petición del navegador no se procesa porque el servidor no es

capaz de cumplir con los requerimientos de la cabecera Expect de la petición.

– 422 - Unprocessable Entity (WebDAV - RFC 4918) La solicitud está bien formada pero fue imposible seguirla debido a errores semánticos en el contenido.

– 423 - Locked (WebDAV - RFC 4918) El recurso al que se está teniendo acceso está bloqueado.

– 424 - Failed Dependency (WebDAV) (RFC 4918) La solicitud falló debido a uno fallo en la solicitud previa.

– 426 - Upgrade Required (RFC 7231) El cliente debería cambiarse a TLS/1.0.

– 428 - Precondition Required El servidor requiere que la petición del navegador sea condicional. Este tipo de peticiones evitan los problemas producidos al modificar con PUT un recurso que ha sido modificado por otra parte.

Page 44: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 40X: Respuestas de error (5)– 429 - Too Many Requests Hay muchas conexiones desde esta dirección de internet. Se utiliza

sobre todo para forzar los límites de consumo de recursos de las APIs

– 431 Request Header Fileds Too Large El servidor no puede procesar la petición porque una de las cabeceras de la petición es demasiado grande. Este error también se produce cuando la suma del tamaño de todas las peticiones es demasiado grande.2

– 449 Una extensión de Microsoft: La petición debería ser reintentada después de hacer la acción apropiada.

– 451 - Unavailable for Legal Reasons El contenido ha sido eliminado como consecuencia de una orden judicial o sentencia emitida por un tribunal.

Page 45: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 50X: Respuestas de error en SERVIDOR– 500 - Internal Server Error Es un código comúnmente emitido por aplicaciones empotradas en

servidores web

– 501 - Not Implemented El servidor no soporta alguna funcionalidad necesaria para responder a la solicitud del navegador (como por ejemplo el método utilizado para la petición).

– 502 - Bad Gateway El servidor está actuando de proxy o gateway y ha recibido una respuesta inválida del otro servidor, por lo que no puede responder adecuadamente a la petición del navegador.

– 503 - Service Unavailable El servidor no puede responder a la petición del navegador porque está congestionado o está realizando tareas de mantenimiento.

– 504 - Gateway Timeout El servidor está actuando de proxy o gateway y no ha recibido a tiempo una respuesta del otro servidor, por lo que no puede responder adecuadamente a la petición del navegador.

Page 46: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

• 50X: error en SERVIDOR (2)– 505 - HTTP Version Not Supported El servidor no soporta o no quiere soportar la versión del protocolo

HTTP utilizada en la petición del navegador.

– 506 - Variant Also Negotiates (RFC 2295) El servidor ha detectado una referencia circular al procesar la parte de la negociación del contenido de la petición.

– 507 - Insufficient Storage (WebDAV - RFC 4918) El servidor no puede crear o modificar el recurso solicitado porque no hay suficiente espacio de almacenamiento libre.

– 508 - Loop Detected (WebDAV) La petición no se puede procesar porque el servidor ha encontrado un bucle infinito al intentar procesarla.

– 509 - Bandwidth Limit Exceeded Límite de ancho de banda excedido. Este código de estatus, a pesar de ser utilizado por muchos servidores, no es oficial.

– 510 - Not Extended (RFC 2774) La petición del navegador debe añadir más extensiones para que el servidor pueda procesarla.

– 511 - Network Authentication Required El navegador debe autenticarse para poder realizar peticiones (se utiliza por ejemplo con los portales cautivos que te obligan a autenticarte antes de empezar a navegar).

Page 47: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

Variables de entornoNombre Descripción

REQUEST_METHOD Comando HTTP utilizado para activar la aplicació n. Puede tomar los valores GET, POST, HEAD.

QUERY_STRING Cadena con la informació n codificada que el cliente pasa a la aplicació n CGI. Só lo se utiliza en el caso de accesos GET, ya que con POST toma un valor nulo.

CONTENT_TYPE Tipo de datos que el cliente envía a la aplicació n CGI. Normalmente, vale application/x-www-form-urlencoded, con las reglas de codificació n antes descritas. Só lo se utiliza para los accesos POST.

CONTENT_LENGTH Longitud de los datos que el cliente envía a la aplicació n CGI. De esta forma, la aplicació n sabe cuanta informació n debe leer de la entrada estándar. Só lo se utiliza para los accesos POST.

AUTH_TYPE Tipo de autentificació n HTTP empleada (basic, kerberos,...). En caso de no utilizarse, toma un valor nulo.

REMOTE_ADDR Direcció n IP del agente que envía la petició n. En caso de acceso a través de proxy, no aparece la direcció n del cliente, sino la del propio proxy,

REMOTE_HOST Direcció n DNS del cliente que envía la petició n. En caso de accesos a través de un proxy, no aparece la direcció n del cliente, sino la del propio proxy,

REMOTE_USER Nombre del usuario que realiza la petició n, en caso de que AUTH_TYPE sea basic.

PATH Directorios por defecto de búsqueda de aplicaciones. Tiene el significado habitual dentro del sistema operativo.

PATH_INFO Campo path-info de la URL de acceso a la aplicació n CGI. Toma un valor nulo en caso de no utilizarse.

PATH_TRANSLATED Directorio local resultante de sumar el directorio en donde residen los ficheros del servidor y PATH_INFO.

SCRIPT_NAME URL local que identifica al programa CGI (p.e. /cgi-bin/prog.exe).

SERVER_NAME Nombre DNS o direcció n IP del servidor HTTP.

SERVER_PORT Puerto TCP del servidor en que se recibe la petició n.

SERVER_SOFTWARE Tipo y versió n del servidor HTTP que ‘lanza’ la aplicació n CGI.

SERVER_PROTOCOL Versió n del protocolo HTTP que utiliza el servidor. Casi siempre es la 1.0.

GATEWAY_INTERFACE Versió n de protocolo que utiliza el servidor para dialogar con el programa. Normalmente es CGI/1.1

Page 48: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• HTTP 2.0

– No modifica la semántica → Son compatibles

– Multiplexación: enviar y recibir varios mensajes al mismo tiempo optimizando la comunicación

– Servicio 'server push'

– Compresión de cabeceras para transmitir menos información y en formato binario

– Priorización de flujos

– https://http2.akamai.com/demo

– https://github.com/bagder/http2-explained/tree/master/es o https://bagder.gitbooks.io/http2-explained/es/

– https://hpbn.co/http2/

Page 49: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Binario: Pueden enviarse distintos tipos de trama, y todos ellos comienzan de la misma

manera:

Tipo, Tamaño, Flags, Identificador de Flujo y la carga útil de la trama.

• Existen 10 tipos de tramas definidos en la especificación http2 y los dos tipos fundamentales que se mapean con las funcionalidades de HTTP/1.1 son DATA y HEADERS

Page 50: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Flujo multiplexado a través del identificador de flujo que asocia cada trama aun flujo

(asociación lógica)

• Una conexión HTTP/2 puede tener múltiples flujos abiertos y concurrentes pudiendo ser cerrados por cualquiera (cliente o servidor)

• El orden de los flujos es significativo y paquete de distintos flujos se mezclan en la misma conexión

• Los flujos tienen pesos para establecer prioridades

Page 51: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP

Page 52: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• HTTP 2.0

– Servicio 'server push'

Page 53: Protocol HTTP

Master en Servicios Web Servidores WEBUniversidad de Alicante

HTTP• Lecturas acerca de HTTP 2.0

– https://tools.ietf.org/html/rfc7540

– https://www.nginx.com/wp-content/uploads/2015/09/NGINX_HTTP2_White_Paper_v4.pdf

– https://http2.github.io/faq/

– https://blog.cloudflare.com/http-2-for-web-developers/

Page 54: Protocol HTTP

AISI

Máster Servicios Web

Internet Servicios