Accept
Uso
La cabecera Accept impulsa la negociación de contenido. El cliente envía una lista de tipos de medio ordenados por preferencia y el servidor selecciona la mejor coincidencia entre las representaciones disponibles del recurso solicitado.
Los navegadores establecen esta cabecera automáticamente según el contexto de la solicitud. Una solicitud de navegación suele pedir text/html, mientras que un elemento de imagen pide los formatos de imagen habituales. Los clientes de API envían a menudo application/json o application/xml.
Cuando el servidor no dispone de ninguna representación que coincida con los tipos indicados, la respuesta esperada es 406 Not Acceptable. En la práctica, muchos servidores ignoran la cabecera y devuelven la representación predeterminada.
Nota
La cabecera Accept no es obligatoria. Omitirla implica que el cliente acepta cualquier tipo de medio (/). Los navegadores envían / como alternativa, y muchos servidores ignoran Accept por completo y devuelven un Content-Type fijo con independencia de la preferencia del cliente.
media-type/subtype
Un tipo de medio concreto, como text/html o application/json. El servidor trata el par completo type/subtype como una preferencia específica.
media-type/*
Un subtipo comodín. image/* indica que se acepta cualquier formato de imagen, ya sea image/png, image/webp o image/avif.
*/*
Acepta cualquier tipo de medio. Este comodín actúa como alternativa cuando ningún otro tipo coincide.
;q= (valor de calidad)
Un peso entre 0 y 1 que expresa la preferencia relativa. Los valores más altos indican una preferencia mayor. Si se omite, el peso predeterminado es 1.0. Un valor de 0 significa que el tipo no es aceptable.
Ejemplo
Un navegador que solicita una página HTML envía varios tipos de medio ordenados por valor de calidad. Gana el tipo con mayor peso que el servidor admita.
Accept: text/html, application/xhtml+xml, */*;q=0.8
Un cliente de API que solicita JSON con XML como alternativa asigna a XML un valor de calidad inferior.
Accept: application/json, application/xml;q=0.9
Un agente de IA solicita una página en Markdown para reducir el consumo de tokens, con HTML como alternativa.
Accept: text/markdown, text/html;q=0.9
Agentes de IA y negociación de contenido
Proveedores de CDN como Cloudflare convierten las páginas HTML a Markdown al vuelo cuando una solicitud incluye Accept: text/markdown. La conversión reduce el número de tokens hasta en un 80 %, lo que convierte la negociación de contenido en una optimización práctica para los agentes y rastreadores basados en LLM.
Un cliente de API que solicita respuestas de error estructuradas usa application/problem+json junto al tipo de contenido habitual. El servidor devuelve detalles del problema para los errores y JSON para las respuestas correctas.
Accept: application/problem+json, application/json
Una solicitud que enumera varios formatos de texto con prioridades explícitas. text/html lleva el peso predeterminado de 1.0, text/plain le sigue con 0.9, cualquier otro formato de texto queda en 0.8 y todo lo demás en 0.7.
Accept: text/html, text/plain;q=0.9, text/*;q=0.8, */*;q=0.7
Nota
Cuando dos tipos comparten el mismo valor de calidad, prevalece el tipo más específico. Si tanto text/html como text/* llevan un peso de 1.0, el servidor selecciona text/html.