InicioInfoHTTP para newbies y no tan newbies

HTTP para newbies y no tan newbies

Info12/19/2011
# EncabezadoBuenas, hoy les traigo un vistazo a HTTP, el Hyper Text Transfer Protocol (Protocolo de Transferencia de HiperTexto).Les comento cómo viene la mano: Qué vas a encontrar acá?Vamos a repasar qué es lo que pasa desde el moment en que en tu browser escribís www.taringa.com hasta que se carga totalmente la página. O lo que podés recibir en vez de la página.- Qué es HTTP?- Cómo se realizan las transacciones HTTP?- Solicitudes y Respuestas HTTP.- Código de errores HTTP, como el 200, el 301, el 404, el 503...Para los newbies, incluyo una descripción completa con ejemplos fáciles, para que sea entendible. Para los no tan newbies incluyo, en cursiva, una ampliación de los conceptos con lenguaje técnico, en secciones llamadas Tecnicismos. Sientanse libres de saltear esas secciones.# Fin del Encabezado# Cuerpo Al escribir una URL en la barra de direcciones y dar enter, estamos tratando de conectarnos con un servidor que nos mostrará la página que queremos ver. Algo que hacemos todos los días, no?. Veamos qué pasa detrás de bambalinas.Tenemos 3 entidades participantes:El cliente: Puede ser un browser (firefox, chrome, opera, ie, etc) o quizás una consola (utilizando wget o quizás lynx). Desde él voy a intentar conectarme a...El servidor: Es la máquina que contiene la información (recurso) que estoy buscando, como wikipedia, taringa, la compu de mi amigo llena de archivos interesantes, etc.Los mensajes: Cliente y servidor se comunican entre ellos mandando mensajes. Del cliente al servidor se envían pedidos. Del servidor al cliente se envían las respuestas a esos pedidos (que trataremos a lo largo del thread), y la información o recurso que pedimos.Para que ambos entiendan esos mensajes, deben comunicarse en el mismo "lenguaje" o, en términos técnicos, protocolo. El más utilizado actualmente es el http. Te suena, no? Y claro, cuántas veces habrás tecleado http://www.taringa.com ?# TecnicismosDesde 1990, el protocolo HTTP (Protocolo de transferencia de hipertexto) es el protocolo más utilizado en Internet. La versión 0.9 sólo tenía la finalidad de transferir los datos a través de Internet (en particular páginas Web escritas en HTML). La versión 1.0 del protocolo (la más utilizada) permite la transferencia de mensajes con encabezados que describen el contenido de los mensajes mediante la codificación MIME.El propósito del protocolo HTTP es permitir la transferencia de archivos (principalmente, en formato HTML). entre un navegador (el cliente) y un servidor web (denominado, entre otros, httpd en equipos UNIX) localizado mediante una cadena de caracteres denominada dirección URL. Desde el punto de vista de las comunicaciones, HTTP está soportado sobre los servicios de conexión TCP/IP, y funciona de la misma forma que el resto de los servicios comunes de los entornos UNIX: un proceso servidor escucha en un puerto de comunicaciones TCP (por defecto, el 80), y espera las solicitudes de conexión de los clientes Web. Una vez que se establece la conexión, el protocolo TCP se encarga de mantener la comunicación y garantizar un intercambio de datos libre de errores.HTTP se basa en sencillas operaciones de solicitud/respuesta. Un cliente establece una conexión con un servidor y envía un mensaje con los datos de la solicitud. El servidor responde con un mensaje similar, que contiene el estado de la operación y su posible resultado. Todas las operaciones pueden adjuntar un objeto o recurso sobre el que actúan; cada objeto Web (documento HTML, fichero multimedia o aplicación CGI) es conocido por su URL.Las principales características del protocolo HTTP son:- Toda la comunicación entre los clientes y servidores se realiza a partir de caracteres de 8 bits. De esta forma, se puede transmitir cualquier tipo de documento: texto, binario, etc., respetando su formato original.- Permite la transferencia de objetos multimedia. El contenido de cada objeto intercambiado está identificado por su clasificación MIME.- Existen tres verbos básicos (hay más, pero por lo general no se utilizan) que un cliente puede utilizar para dialogar con el servidor: GET, para recoger un objeto, POST, para enviar información al servidor y HEAD, para solicitar las características de un objeto (por ejemplo, la fecha de modificación de un documento HTML).- Cada operación HTTP implica una conexión con el servidor, que es liberada al término de la misma. Es decir, en una operación se puede recoger un único objeto.- No mantiene estado. Cada petición de un cliente a un servidor no es influida por las transacciones anteriores. El servidor trata cada petición como una operación totalmente independiente del resto.- Cada objeto al que se aplican los verbos del protocolo está identificado a través de la información de situación del final de la URL. # Fin de TecnicismosComunicación entre Servidor y Cliente- El navegador realiza una solicitud HTTP- El servidor procesa la solicitud y después envía una respuesta HTTPHay dos tipos de mensaje HTTP: Solicitudes y Respuestas. Cada una se compone de 3 partes.Solicitudes HTTPUna solicitud HTTP es un conjunto de líneas que el cliente (el navegador) envía al servidor indicandole qué quiere hacer, cómo lo quiere hacer, y dandole información sobre si mismo (qué navegador soy, qué versión, en qué sistema operativo estoy corriendo, qué lenguajes y protocolos acepto, etc). Cuenta con 3 partes: Linea de solicitud, Encabezado y Cuerpo.Ejemplo:GET /post/novatos HTTP/1.1Host: www.taringa.comUser-Agent: Mozilla/5.0 (Windows;en-GB; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5Accept-Language: en-gb,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Connection: keep-alive* Línea de solicitud: Es una línea que especifica el tipo de documento solicitado, el método que se aplicará y la versión del protocolo utilizada. La línea está formada por tres elementos que deben estar separados por un espacio: el método la dirección URL la versión del protocolo utilizada por el cliente* Encabezado: Es un conjunto de líneas opcionales que permiten aportar información adicional sobre la solicitud y/o el cliente (navegador, sistema operativo, servidor contactado, etc.). Cada una de estas líneas está formada por un nombre que describe el tipo de encabezado, seguido de dos puntos y el valor del encabezado.* Cuerpo: Es un conjunto de líneas opcionales que deben estar separadas de las líneas precedentes por una línea en blanco y, por ejemplo, permiten que se envíen datos al servidor, usando el método POST. # Tecnicismos# Fin de Tecnicismos Respuestas HTTPUna respuesta HTTP es un conjunto de líneas que el servidor envía al navegador. En ésta le dice si entendió o no la solicitud, si la va a procesar, si está pidiendo algo inválido, etc. Consta de 3 partes: Linea de solicitud, Encabezado y Cuerpo.HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length * Línea de solicitud: Es una línea que especifica la versión del protocolo utilizada y el estado de la solicitud en proceso mediante un texto explicativo y un código. La línea está compuesta por tres elementos que deben estar separados por un espacio: la versión del protocolo utilizada el código de estado el significado del código* Encabezado: Es un conjunto de líneas opcionales que permiten aportar información adicional sobre la respuesta y/o el servidor. Cada una de estas líneas está compuesta por un nombre que califica el tipo de encabezado, seguido por dos puntos y por el valor del encabezado. * Cuerpo: Contiene el documento solicitado, en este caso, ese es el código fuente de la sección novatos de Taringa, que es lo que solicitamos más arriba.# Tecnicismos # Fin de Tecnicismos Códigos de Estado HTTPEn el encabezado de las respuestas HTTP se encuentra algo llamado códigos de estado. Los códigos de estado HTTP se componen de 3 números:1 - 1xx: Respuestas informativas que indican "Petición recibida, continuando proceso".Estos códigos son exclusivos del protocolo HTTP 1.1, con lo cual las páginas que usan el anterior, HTTP 1.0, no deberían recibir estos códigos, ya que no los entenderían.Mensajes:100 Continúa Esta respuesta significa que el servidor recibió la primer parte del pedido (el encabezado) y no la rechazó, que es momento que el cliente mande el resto (el cuerpo). "Hola, acá estoy, qué querés?"101 Conmutando protocolos El cliente le pide al servidor que cambie el protocolo. El servidor envía un mensaje 101 para indicar que hará el cambio Inmediatamente después de enviar esta respuesta. "Bueno, dale, ya te cambio el protocolo".El protocolo debería cambiar sólo cuando implica una ventaja. Por ejemplo, cambiar a una nueva versión de HTTP da una ventaja sobre una vieja, y cambiar a un protocolo sincronizado en tiempo real puede ser ventajoso cuando se manejan recursos que funcionan mejor en esas condiciones.102 Procesando El Servidor le indica al cliente que recibió el pedido pero todavía está procesandolo, no tiene todavía una respuesta para darle. En otras palabras, "bancame que estoy pensando".2 - 2xx: Mensajes que informan que el pedido fue procesado correctamente.El Servidor le indica al cliente que la petición fue recibida correctamente, entendida y aceptada.Mensajes:200 OK Respuesta estándar para peticiones correctas. "Dale, te hago el favor".La respuesta que devuelve el servidor depende del pedido que le haya hecho el cliente. Por ejemplo:Obtener (GET): Un objeto correspondiente al recurso pedido es enviado en la respuesta.Encabezado (HEAD): Los campos correspondientes al objeto encabezado correspondiente al recurso solicitado es enviado en la respuesta. La respuesta no tiene cuerpo.Enviar (POST): En la respuesta hay un objeto describiendo o conteniendo el resultado de una acción.201 Creado La petición ha sido completada y ha resultado en la creación de un nuevo recurso. Por ejemplo, cuando subimos una foto a un servidor y todo fue bien, recibimos este mensaje. La respuesta debería incluir la url del nuevo objeto o dónde encontrarlo.202 Aceptada 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. "Entiendo lo que me pedís pero voy a pensar si lo hago". La respuesta 202 es intencionalmente no comprometedora. Su propósito es permitir al server que acepter un pedido para otro proceso sin exigirle al cliente que la comunicación entre ellos persista hasta obtener la respuesta. El objeto devuelto con este estado debería incluir una indicación del estado de la solicitud o algún link a un monitor de estatus, o tiempo estimado hasta completar el pedido.203 Información no autoritativa (desde HTTP/1.1) La información devuelta en la respuesta no está disponible en el server original, pero está siendo buscada en una copia local o externa. "Lo tenía pero no lo encuentro, por suerte para vos, lo encontré en otro lado y lo estoy trayendo".204 Sin contenido Es una respuesta con el cuerpo vacío, pero, como pertenece a la familia de los 200, indica que la solicitud fue exitosa. Se devuelve cuando no es necesario dar detalles de la acción realizada. La respuesta puede incluir información nueva o actualizada en los encabezados. La ventaja de esta respuesta es que la página que estabamos mirando no cambia.205 Recargar contenido El Servidor realizó exitosamente la tarea solicitada y le recomienda al cliente que actualice la página. Generalmente se manifiesta con un popup avisando que deberías actualizar la página, con un aceptar o un cancelar. 206 Contenido parcial 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 Estado múltiple (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 sub-peticiones sean hechas.3 - 3xx: RedireccionesEl cliente tiene que tomar una acción adicional para completar la petición. La acción requerida puede ser llevada a cabo por el agente de usuario sin interacción con el usuario si y sólo si el método utilizado en la segunda petición es GET o HEAD. El agente de usuario no debe redirigir automáticamente una petición más de 5 veces, dado que tal funcionamiento indica usualmente un Bucle infinito.Mensajes:300 Múltiples opciones Indica opciones múltiples para el URI que el cliente podría seguir, con información sobre cada una para que el browser pueda elegir la más apropiada.301 Movido permanentemente "La página estaba acá, pero no está más. No te preocupes que te estoy llevando a la nueva ubicación". Cuando se recibe un 301 en una solicitud que no es GET ni HEAD, el browser debe consultar al cliente si se desea continuar; por ejemplo, cuando estás enviando un comentario a una página que fue movida permanentemente. El cliente debería actualizar sus bookmarks por la dirección nueva.302 Encontrado El recurso solicitado reside temporalmente en una dirección (URI) diferente. Ya que la redirección es temporal, el cliente debería conservar la dirección original.303 Vea otra (desde HTTP/1.1) La respuesta a la solicitud puede ser encontrada en otra dirección y debería ser solicitada utilizando GET. Este método existe principalmente para permitir a los usuarios que utilizaron POST para realizar una solicitud puedan ser redirigidos a un recurso seleccionado.Schrödinger's cat304 No modificado 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 Utilice un proxy (desde HTTP/1.1) El recurso solicitado debe ser accedido a través de un proxy, dado en el campo Location. Se espera que el cliente repita esta solicitud usando el proxy. Muchos clientes HTTP (como Mozilla2 e Internet Explorer) no se apegan al estándar al procesar respuestas con este código, principalmente por motivos de seguridad.306 Cambie de proxy Esta respuesta está fuera de uso.307 Redirección temporal (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. Como la dirección puede cambiar ocasionalmente, el cliente debería conservar la dirección original. 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. 4 - 4xx Errores del clienteLa intención de la clase de códigos de respuesta 4xx es para casos en los cuales el cliente parece haber errado la petición. Excepto cuando se responde a una petición HEAD, el servidor debe incluir una entidad que contenga una explicación a la situación de error, y si es una condición temporal o permanente. Estos códigos de estado son aplicables a cualquier método de solicitud (como GET o POST). Los agentes de usuario deben desplegar cualquier entidad al usuario. Estos son típicamente los códigos de respuesta de error más comúnmente encontrados.400 Solicitud incorrecta La solicitud contiene sintaxis errónea y no debería repetirse.401 No autorizado La solicitud necesita ingresar usuario/password antes de continuar. La respuesta debe incluir un encabezado pidiendo datos de autorización. El cliente puede repetir la solicitud con el campo de Autorización del encabezado correspondiente. Si el pedido incluye las credenciales, la respuesta incluye que las mismas son no válidas. 402 Pago requerido 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 Prohibido La solicitud fue legal, pero el servidor se rehúsa a responderla. En contraste a una respuesta 401 No autorizado, la autentificación no haría la diferencia. El mensaje debería incluir las razones por las cuales esto sucede.404 No encontrado Recurso no encontrado. Se utiliza cuando el servidor web no encuentra la página o recurso solicitado.405 Método no permitido Una petición fue hecha a una dirección utilizando un método de solicitud no soportado por dicha dirección; por ejemplo, cuando se utiliza GET en una forma que requiere que los datos sean presentados vía POST, o utilizando PUT en un recurso de sólo lectura.406 No aceptable El servidor no puede dar una respuesta que cumpla con todos los requisitos que el cliente pide en su solicitud.407 Autenticación Proxy requerida 408 Tiempo de espera agotado El cliente tardó en contestar más que lo que el servidor estaba dispuesto a esperar.409 Conflicto La solicitud no pudo ser completada debido a un conflicto con el estado actual del recurso. Este código sólo es permitido en situaciones donde es esperable que el usuario pueda resolver el conflicto y reenviar el pedido. El cuerpo de la respuesta debería incluir información suficiente para que el usuario pueda reconocer el origen del conflicto.410 Ya no disponible Indica que el recurso solicitado ya no está disponible y no lo estará de nuevo. Este código debería ser utilizado cuando un recurso haya sido quitado intencionalmente; sin embargo, en la práctica, un código 404 No encontrado es expedido en su lugar.411 Requiere longitud El servidor se niega a aceptar el pedido sin un campo Content-Length definido. El cliente puede repetir el pedido si agrega un valor válido al campo del encabezado Content-Length, conteniendo la longitud del cuerpo del mensaje.412 Falló precondición Una precondición dada en uno o más campos del encabezado del pedido ha sido evaluado como falso cuando ha sido probado en el server.413 Solicitud demasiado larga El servidor se niega a aceptar el pedido porque el mensaje es demasiado largo.414 URI demasiado larga El servidor se niega a aceptar el pedido porque la dirección solicitada es demasiado larga.415 Tipo de medio no soportado El servidor se niega a aceptar el pedido porque el pedido está en un formato no soportado por el recurso pedido para el método solicitado.416 Rango solicitado no disponible 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.417 Falló expectativa La condición dada en el campo Expect del encabezado no puede ser cumplida por el servidor.421 Hay muchas conexiones desde esta dirección de internet422 Entidad no procesable (WebDAV - RFC 4918) La solicitud está bien formada pero fue imposible seguirla debido a errores semánticos.423 Bloqueado (WebDAV - RFC 4918) El recurso al que se está queriendo acceso está bloqueado.424 Falló dependencia (WebDAV) (RFC 4918) La solicitud falló debido a una falla en la solicitud previa.426 Actualización requerida (RFC 2817) El cliente debería cambiarse a TLS/1.0.5 - 5xx Errores de servidorLos códigos de respuesta que comienzan con el dígito "5" indican casos en los cuales el servidor tiene registrado aún antes de servir la solicitud, que está errado o es incapaz de ejecutar la petición. Excepto cuando está respondiendo a un método HEAD, el servidor debe incluir una entidad que contenga una explicación de la situación de error, y si es una condición temporal o permanente. Los agentes de usuario deben desplegar cualquier entidad incluida al usuario. Estos códigos de repuesta son aplicables a cualquier método de petición.500 Error interno Es un código comúnmente emitido por aplicaciones empotradas en servidores web, mismas que generan contenido dinámicamente, por ejemplo aplicaciones montadas en IIS o Tomcat, cuando se encuentran con situaciones de error ajenas a la naturaleza del servidor web. En otras palabras, algo anda mal en el servidor.501 No implementado El servidor no soporta la funcionalidad requerida para completar este pedido. Esta es la respuesta apropiada cuando el servidor no reconoce el metodo del pedido y no es capaz de soportarlo para ningún recurso.502 Pasarela incorrecta El servidor, mientras actuaba como pasarela (gateway) o proxy, recibió una respuesta inválida del server que contactó mientras intentaba procesar el pedido.503 Servicio no disponible El servidor no puede atender el pedido debido a una sobrecarga temporal o un mantenimiento aplicado al servidor. La implicación es que es una condición temporaria que puede aliviarse después de una demora. 504 Tiempo de espera de la pasarela agotado El servidor, mientras actuaba como pasarela o proxy, no recibió una respuesta rápida del servidor que contactó mientras intentaba procesar el pedido.505 Versión de HTTP no soportada El servidor no soporta la versión HTTP asociada al pedido.507 Almacenamiento insuficiente (WebDAV - RFC 4918) El servidor no tiene espacio suficiente para aceptar el pedido.508 - Loop detectado El pedido fue redireccionado a una dirección que a su vez redirecciona a otra, entrando en un loop infinito.509 Límite de ancho de banda excedido Este código de estatus, mientras que es utilizado por muchos servidores, no es oficial.# Fin del Cuerpo# PostdataY con esto damos por terminada la repasada a HTTP.Para encontrar más información, pueden consultar los links en la fuente.Las fotos de los gatitos son los HTTP Status Cat, pueden encontrar la galería en la fuente, que incluye otros estados como 418 - Soy una tetera.# Fin de la Postdata
Datos archivados del Taringa! original
124puntos
591visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

R
Ramanathan🇦🇷
Usuario
Puntos0
Posts23
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.