Cabecera HTTP: conceptos básicos para usuarios
Cuando visitas cualquier sitio web, tu navegador envía una solicitud al servidor web para obtener datos o información del mismo, por ejemplo, un archivo HTML (es decir, una página web). Tanto en la solicitud, la HTTP-Request, como en la respuesta del servidor, se intercambian, además de datos reales, "información meta". Esta información se resume en la cabecera HTTP. Explicamos la función de la cabecera HTTP y sus elementos más importantes.
- Domina el mercado con nuestra oferta 3x1 en dominios
- Tu dominio protegido con SSL Wildcard gratis
- 1 cuenta de correo electrónico por contrato
La función de la cabecera HTTP: un ejemplo
Si quisieras entrar al sitio www.example.com, el servidor web no solo te entregará este sitio web en sí, sino también la siguiente cabecera, la cual es invisible para los usuarios:
Cada una de estas líneas recibe el nombre de campo de cabecera (header field). Cada una de ellas, excepto la primera, consta de nombres y valores separados por dos puntos.
- HTTP/1.1 es la versión válida del protocolo HTTP.
- 200 OK es el código de estado. Indica que el servidor ha recibido, entendido y aceptado la solicitud.
- Content-Encoding y Content-Type proporcionan información sobre el tipo de archivo.
- Age, Cache-Control, Expires, Vary y X-Cache se refieren al caching del archivo.
- Etag y Last-Modified se utilizan para el control del archivo entregado.
- Server se refiere al software del servidor web.
- Content-lenght es el tamaño del archivo en bytes.
Como puedes ver, la información de cabecera se utiliza principalmente para la coordinación entre el cliente y el servidor: se garantiza que el cliente pueda conocer la forma del archivo, saber si el archivo está actualizado y que el archivo cumpla con las expectativas del navegador.
Las líneas de cabecera que se muestran en el ejemplo son solo una pequeña parte de los campos disponibles. En total, hay casi 100 campos de cabecera HTTP, de los cuales unos 30 sirven para especificar solicitudes HTTP, otros 30 para la respuesta del servidor y toda una serie de otros campos de cabecera que tienen diferentes propósitos y que, en su mayoría, no son utilizados por usuarios comunes.
El siguiente resumen explica los campos de cabecera más importantes.
Campos de cabecera HTTP más importantes
Request header (cabecera de solicitud)
Campo de cabecera | Significado | Ejemplo |
---|---|---|
Accept | Qué tipos de contenido puede procesar el cliente; si el campo está vacío, esos son todos los tipos de contenido | Accept: text/html, application/xml |
Accept-Charset | Qué caracteres puede mostrar el cliente | Accept-Charset: utf-8 |
Accept-Encoding | Qué formatos comprimidos soporta el cliente | Accept-Encoding: gzip |
Accept-Language | Preferencia de idioma | Accept-Language: de-DE |
Authorization | Datos de autenticación (por ejemplo, para un inicio de sesión) | Basic WjbU7D25zTAlV2tZ7== |
Cache-Control | Opciones de mecanismo de caching | Cache-Control: no-cache |
Cookie | Cookies almacenadas para este servidor | Cookie: $Version=1; Content=23 |
Content-Length | Longitud del cuerpo de la solicitud | Content-Length: 212 |
Content-Type | Tipo MIME del cuerpo; pertinente para las solicitudes POST y PUT | Content-Type: application/x_222-form-urlencoded |
Date | Fecha y hora de la solicitud | Date: Mon, 9 March 2020 09:02:22 GMT |
Expect | Formula una expectativa al servidor, generalmente la recepción de una solicitud grande | Expect: 100-continue (El servidor debe enviar el código 100 cuando esté preparado para recibir una solicitud) |
Host | Nombre de dominio del servidor | Host: ejemplo.es |
If-Match | Permite la ejecución condicional de una acción, dependiendo de la coincidencia de un código transmitido | If-Match: „ft678iujhnjio90’pöl“ |
If-Modified-Since | Permite enviar contenido solo si éste ha sido modificado desde el momento especificado | IF-Modified-Since: Mon 2 Mar 2020 1:00:00 GMT |
If-None-Match | Como arriba, pero especificado a través de un ETag (etiqueta de entidad, ver abajo) | If-None-Match: „cxdrt5678iujhgbvb“ |
If-Range | Solicita solo la parte del contenido que fue cambiada o que falta en el cache del cliente | If-Range: Mon 2 Mar 2020 1:00:00 GMT |
If-Unmodified-Since | IF-Modified-Since análogo | If-Modified-Since: Mon 2 Mar 2020 1:00:00 GMT |
Max-Forwards | Define el número máximo de veces que la respuesta del servidor puede ser reenviada | Max-Forwards: 12 |
Proxy-Authorization | Se utiliza para autenticar al cliente en un servidor proxy | Proxy-Authorization: Basic WjbU7D25zTAlV2tZ7== |
Range | Especifica una parte del contenido solicitado | Range: bytes=0-9999 |
Referrer | URL del recurso del que procede la solicitud (es decir, del que se hizo el enlace) | Referrer: https://ejemplo.es/index.html |
TE | Codificación de transferencia aceptada | TE: gzip, deflate |
User-Agent | User-Agent del cliente (es decir, el navegador) | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 |
- Mejora tu posicionamiento en Google sin necesidad de una agencia
- Responde los comentarios y publica en redes sociales más rápido
- Sin necesidad de conocimientos de SEO o marketing online
Response header (cabecera de respuesta)
Campo de cabecera | Significado | Ejemplo |
---|---|---|
Accept-Ranges | Cuáles son las unidades que el servidor acepta para las especificaciones del rango (ver arriba) | Accept-Ranges: bytes |
Age | Número de segundos que el objeto ha estado en el cache | Age: 2300 |
Allow | Tipos de solicitud permitidos para un recurso específico | Allow: GET, POST, HEAD |
Cache-Control | Si y cuánto tiempo se puede mantener el objeto en el cache | Cache-Control: max-age=4800 |
Connection | Tipo de conexión preferente | Connection: close |
Content-Encoding | Tipo de codificación | Content-Encoding: deflate |
Content-Language | Idioma del contenido | Content-Language: de-DE |
Content-Length | Tamaño del cuerpo en bytes | Content-Length: 135674 |
Content-Location | Ubicación del archivo si proviene de un lugar diferente al solicitado (por ejemplo, CDN) | Content-Location: /ejemplo.es |
Content-Security-Policy | Políticas de seguridad del servidor | Content-Security-Policy: frame-src 'none‘; object-src 'none‘ |
Content-Type | Tipo MIME del archivo solicitado | Content-Type: text/tml; charset=utf-8 |
Date | Tiempo de la respuesta | Date: Mon 2 Mar 2020 1:00:00 GMT |
ETag | Marca una versión específica del archivo | ETag: „vt6789oi8uztgfvbn“ |
Expires | Cuándo el archivo debe ser considerado obsoleto | Expires: Tue 3 Mar 2020 1:00:00 GMT |
Last-Modified | Hora de la última modificación del archivo | Last-Modified: Mon 2 Mar 2020 1:00:00 GMT |
Location | Identifica el lugar al que se envió la solicitud | Location: https://www.ejemplo.es |
Proxy-Authenticate | Dice si el cliente debe autenticarse al Proxy y cómo debe hacerlo | Proxy-Authenticate: Basic |
Retry-After | A partir de cuándo el cliente debe reenviar la solicitud si el recurso no está disponible temporalmente (fecha o segundos) | Retry-After: 300 |
Server | Identificación del servidor | Server: Apache |
Set-Cookie | Establece una cookie en el cliente | Set-Cookie: UserID=XY; Max-Age=3800; Version=1 |
Transfer-Encoding | Método de codificación | Transfer-Encoding: gpzip |
Vary | Indica qué campos de cabecera deben considerarse variables si se solicita un archivo del cache. | Vary: User-Agent (=el servidor tiene preparadas diferentes versiones de archivos dependiendo del User Agent) |
Via | A través de qué proxies se envió la respuesta. | Via: 1.1www.ejemplo.es |