Si eres un desarrollador web, probablemente sepas lo importante que es comunicarse eficazmente con los servidores web que alojan tus aplicaciones. Necesitas enviar las solicitudes correctas y recibir las respuestas correctas, para que tus aplicaciones puedan funcionar correctamente y proporcionar una gran experiencia de usuario. Pero, ¿sabes cómo usar la cabecera HTTP accept para optimizar esta comunicación y hacer que tus aplicaciones sean más flexibles y eficientes? Si no es así, no te preocupes.
En esta entrada de blog, te enseñaré todo lo que necesitas saber sobre la cabecera HTTP accept y cómo usar herramientas como Apidog para probar y depurar tus solicitudes y respuestas HTTP.
¿Qué es la cabecera HTTP Accept y cómo funciona?
La cabecera HTTP accept es una parte del mensaje de solicitud. Es una forma de que el cliente le diga al servidor qué tipo de contenido puede aceptar y procesar. El contenido puede ser cualquier cosa que el servidor pueda proporcionar, como HTML, XML, JSON, imágenes, vídeos, audio, etc. La cabecera HTTP accept tiene el siguiente formato:
Accept: tipo-de-medio, tipo-de-medio, ...
El tipo-de-medio es una cadena que especifica el tipo y el subtipo del contenido, como text/html
, application/json
, image/jpeg
, etc. También puedes usar comodines para indicar cualquier tipo o subtipo, como */*
, text/*
, image/*
, etc. También puedes usar parámetros para proporcionar más detalles sobre el contenido, como la calidad, el idioma, la codificación, etc. Por ejemplo, text/html;q=0.8,en-US
significa que el cliente puede aceptar documentos HTML con una calidad de 0.8 (de 1) y en inglés estadounidense.
Puedes especificar varios tipos de medio en la cabecera HTTP accept, separados por comas. El orden de los tipos de medio indica la preferencia del cliente. El primer tipo de medio es el más preferido, el segundo es el segundo más preferido, y así sucesivamente. Por ejemplo, Accept: text/html,application/json,image/png
significa que el cliente prefiere documentos HTML, luego datos JSON y luego imágenes PNG.

¿Por qué es importante la cabecera HTTP Accept?
La cabecera HTTP accept es una forma poderosa de negociar el contenido entre el cliente y el servidor. Permite al cliente solicitar diferentes tipos de contenido en función de sus capacidades y preferencias, y permite al servidor entregar el mejor contenido posible para el cliente, en función de su disponibilidad y compatibilidad. Esto puede mejorar el rendimiento, la eficiencia y la experiencia del usuario tanto del cliente como del servidor.
La cabecera HTTP accept es importante porque ayuda al servidor a entregar el mejor contenido posible para el cliente, en función de sus capacidades y preferencias. También ayuda al servidor a evitar el envío de datos innecesarios o incompatibles que el cliente no puede usar o mostrar. Esto puede mejorar el rendimiento, la eficiencia y la experiencia del usuario tanto del cliente como del servidor.
Cómo usar la cabecera HTTP Accept para solicitar diferentes tipos de contenido del servidor
Para escribir la cabecera HTTP accept en tu mensaje de solicitud, necesitas usar una herramienta o una biblioteca que te permita enviar solicitudes HTTP. Hay muchas herramientas y bibliotecas disponibles para diferentes lenguajes y plataformas, como curl, Apidog, Axios, Fetch, etc. Para este ejemplo, usaré curl, que es una herramienta de línea de comandos que puedes usar para enviar solicitudes HTTP y recibir respuestas HTTP.
Para usar curl, necesitas escribir el siguiente comando en tu terminal:
curl -H "Accept: tipo-de-medio, tipo-de-medio, ..." URL
La opción -H
te permite agregar una cabecera a tu solicitud. Accept: tipo-de-medio, tipo-de-medio, ...
es la cabecera HTTP accept que quieres enviar. La URL
es la dirección del servidor del que quieres solicitar datos. Por ejemplo, si quieres solicitar documentos HTML de https://example.com, puedes escribir:
curl -H "Accept: text/html" https://example.com
Esto enviará una solicitud a https://example.com con la cabecera Accept: text/html
, lo que significa que solo puedes aceptar documentos HTML como respuesta.
Para leer el mensaje de respuesta del servidor, necesitas mirar el código de estado, la cabecera content-type y el cuerpo del mensaje.
Por ejemplo, si envías la solicitud curl -H "Accept: text/html" https://example.com
, podrías recibir la siguiente respuesta:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<html>
<head>
<title>Example Domain</title>
</head>
<body>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</body>
</html>
El código de estado es 200, lo que significa que la solicitud fue exitosa. La cabecera content-type es text/html; charset=UTF-8
, lo que significa que el servidor devolvió un documento HTML con codificación UTF-8.
Puedes usar la cabecera HTTP accept para solicitar diferentes tipos de contenido del servidor cambiando el tipo de medio en tu solicitud. Por ejemplo, si quieres solicitar datos JSON de https://example.com, puedes escribir:
curl -H "Accept: application/json" https://example.com
Esto enviará una solicitud a https://example.com con la cabecera Accept: application/json
, lo que significa que solo puedes aceptar datos JSON como respuesta. Podrías recibir la siguiente respuesta:
HTTP/1.1 200 OK
Content-Type: application/json
{
"domain": "example.com",
"purpose": "illustrative examples in documents",
"link": "https://www.iana.org/domains/example"
}
El código de estado es 200, lo que significa que la solicitud fue exitosa. La cabecera content-type es application/json
, lo que significa que el servidor devolvió datos JSON. El cuerpo del mensaje son los datos JSON en sí, que puedes ver en tu navegador o en el sitio web de Apidog.
También puedes solicitar varios tipos de contenido del servidor especificando más de un tipo de medio en tu solicitud. Por ejemplo, si quieres solicitar documentos HTML o datos JSON de https://example.com, puedes escribir:
curl -H "Accept: text/html,application/json" https://example.com

Cómo manejar diferentes tipos de respuestas del servidor basadas en la cabecera HTTP Accept
A veces, es posible que el servidor no pueda devolver el tipo exacto de contenido que solicitaste con la cabecera HTTP accept. Esto puede suceder por varias razones, tales como:
- El servidor no tiene el contenido en el formato que solicitaste
- El servidor tiene el contenido en el formato que solicitaste, pero no está disponible en este momento
- El servidor tiene el contenido en el formato que solicitaste, pero no está autorizado a compartirlo contigo
- El servidor tiene el contenido en el formato que solicitaste, pero es demasiado grande o demasiado complejo para devolverlo
- El servidor no entiende o no admite el tipo de medio que solicitaste
Hay muchos códigos de estado posibles que el servidor puede devolver, pero aquí hay algunos de los más comunes que puedes encontrar al usar la cabecera HTTP accept:
- 200 (OK): Esto significa que la solicitud fue exitosa y el servidor devolvió el tipo exacto de contenido que solicitaste con la cabecera HTTP accept. Por ejemplo, si envías la solicitud
curl -H "Accept: text/html" https://example.com
, y el servidor devuelve un documento HTML con el código de estado 200, esto significa que todo salió bien y puedes usar el documento HTML como desees. - 206 (Contenido parcial): Esto significa que la solicitud fue exitosa y el servidor devolvió un tipo diferente de contenido que también puedes aceptar con la cabecera HTTP accept. Por ejemplo, si envías la solicitud
curl -H "Accept: text/html,application/json" https://example.com
, y el servidor devuelve datos JSON con el código de estado 206, esto significa que el servidor no pudo proporcionar documentos HTML, pero pudo proporcionar datos JSON, que también puedes aceptar. Puedes usar los datos JSON como desees, pero debes tener en cuenta que no es el tipo de contenido preferido que solicitaste. - 406 (No aceptable): Esto significa que la solicitud falló y el servidor no pudo proporcionar ningún tipo de contenido que puedas aceptar con la cabecera HTTP accept. Por ejemplo, si envías la solicitud
curl -H "Accept: text/html" https://example.com
, y el servidor devuelve un mensaje de error con el código de estado 406, esto significa que el servidor no tiene ningún documento HTML para devolver y no tiene ningún otro tipo de contenido que puedas aceptar. No puedes usar el mensaje de error como desees, pero debes leerlo atentamente e intentar comprender por qué el servidor no pudo devolver el contenido que solicitaste. Es posible que debas cambiar tu solicitud o ponerte en contacto con el administrador del servidor para obtener más información. - 415 (Tipo de medio no admitido): Esto significa que la solicitud falló y el servidor no entiende o no admite el tipo de medio que solicitaste con la cabecera HTTP accept. Por ejemplo, si envías la solicitud
curl -H "Accept: application/x-custom" https://example.com
, y el servidor devuelve un mensaje de error con el código de estado 415, esto significa que el servidor no sabe qué esapplication/x-custom
y no puede proporcionar ningún contenido en ese formato. No puedes usar el mensaje de error como desees, pero debes leerlo atentamente e intentar comprender por qué el servidor no admite el tipo de medio que solicitaste. Es posible que debas cambiar tu solicitud o ponerte en contacto con el administrador del servidor para obtener más información.
La cabecera content-type y el cuerpo del mensaje de respuesta también pueden variar según el código de estado y el tipo de medio que el servidor devolvió. Puedes usar herramientas como Apidog para ver la cabecera content-type y el cuerpo del mensaje de una manera fácil de usar.
¿Cómo usar Apidog para probar y depurar mi cabecera HTTP accept?
Apidog es una herramienta basada en la web que te ayuda a probar, depurar y documentar tus API de forma gratuita.
Para usar Apidog para probar y depurar tu cabecera HTTP accept, debes seguir estos pasos:
- Haz clic en el botón "Nueva solicitud" para crear una nueva solicitud HTTP.

- Selecciona el método HTTP (GET, POST, PUT, etc.) en el menú desplegable e introduce la URL del punto final de la API que quieres probar en el campo "URL" y luego haz clic en la sección "Cabeceras" para abrirla.

- Normalmente verás una lista de cabeceras con campos para "Nombre" y "Valor".

- Para agregar una nueva cabecera, simplemente haz clic en el nombre y selecciona el nombre y el tipo de contenido que quieres solicitar como valor. Por ejemplo,
Accept: application/json
significa que quieres recibir datos JSON del servidor.


- Envía tu solicitud al servidor y verás la respuesta del servidor en la sección "Respuesta". Puedes inspeccionar el código de estado, las cabeceras de respuesta y el cuerpo de la respuesta.

- Para comprobar si el servidor respeta tu cabecera HTTP accept, mira la cabecera "Content-Type" en la respuesta. Debe coincidir con uno de los tipos de contenido que solicitaste en la solicitud. Por ejemplo, si solicitaste
Accept: application/json
, la respuesta debe tenerContent-Type: application/json
.

Buenas prácticas y consejos para usar la cabecera HTTP accept.
La cabecera HTTP accept es una cabecera de solicitud que indica qué tipos de contenido, expresados como tipos MIME, el cliente puede entender. El servidor usa la negociación de contenido para seleccionar una de las propuestas e informa al cliente de la elección con la cabecera de respuesta Content-Type. Aquí hay algunas buenas prácticas y consejos para usar la cabecera HTTP accept en tus proyectos de desarrollo web:
- Usa la sintaxis del valor de calidad para especificar el orden de preferencia de los tipos de contenido. Por ejemplo,
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
significa que el cliente prefiere HTML, luego XHTML, luego XML y luego cualquier otro tipo. - Usa el carácter comodín (*) para indicar que el cliente puede aceptar cualquier subtipo o cualquier tipo. Por ejemplo,
Accept: image/*
significa que el cliente puede aceptar cualquier formato de imagen, yAccept: */*
significa que el cliente puede aceptar cualquier tipo de contenido. - Sé específico sobre los tipos de contenido que el cliente puede manejar, y evita usar
Accept: */*
a menos que sea necesario. Esto puede ayudar al servidor a enviar el formato más apropiado para el cliente, y evitar el envío de datos innecesarios que el cliente no puede procesar. - Prueba tu cabecera HTTP accept con diferentes servidores web y servicios web, y comprueba la cabecera de respuesta Content-Type para ver si el servidor respeta tus preferencias. Puedes usar herramientas como curl o Apidog para enviar solicitudes HTTP personalizadas e inspeccionar las cabeceras de respuesta.
Conclusión
En esta entrada, he explicado la importancia de la cabecera HTTP Accept y cómo se puede usar para negociar el tipo de contenido entre el cliente y el servidor. También he mostrado cómo establecer la cabecera Accept en diferentes escenarios.
Al usar la cabecera Accept, podemos asegurarnos de que el servidor responda con el formato más apropiado para nuestras necesidades, y evitar conversiones o errores innecesarios. La cabecera Accept es una de las muchas cabeceras HTTP que pueden ayudarnos a construir aplicaciones web más robustas y eficientes.