HTTPQUERY
Русский

Accept

Применение

Заголовок Accept управляет согласованием содержимого. Клиент отправляет список медиатипов, упорядоченный по предпочтению, а сервер выбирает наиболее подходящий из представлений, доступных для запрошенного ресурса.

Браузеры устанавливают этот заголовок автоматически, исходя из контекста запроса. Навигационный запрос обычно запрашивает text/html, тогда как элемент изображения запрашивает распространённые форматы изображений. Клиенты API часто отправляют application/json или application/xml.

Когда у сервера нет представления, соответствующего ни одному из перечисленных типов, ожидаемый ответ — 406 Not Acceptable. На практике же многие серверы игнорируют этот заголовок и возвращают представление по умолчанию.

Примечание

Заголовок Accept не обязателен. Его отсутствие означает, что клиент принимает любой медиатип (/). Браузеры отправляют / как запасной вариант, а многие серверы полностью игнорируют Accept, возвращая фиксированный Content-Type независимо от предпочтений клиента.

media-type/subtype

Конкретный медиатип, например text/html или application/json. Сервер воспринимает полную пару type/subtype как явно указанное предпочтение.

media-type/*

Подстановочный подтип. image/* означает согласие на любой формат изображения, будь то image/png, image/webp или image/avif.

*/*

Принимается любой медиатип. Этот подстановочный знак служит запасным вариантом, когда ни один другой тип не подходит.

;q= (значение качества)

Вес от 0 до 1, выражающий относительное предпочтение. Чем выше значение, тем сильнее предпочтение. Если он опущен, вес по умолчанию равен 1.0. Значение 0 означает, что тип неприемлем.

Пример

Браузер, запрашивающий HTML-страницу, отправляет несколько медиатипов, упорядоченных по значению качества. Побеждает поддерживаемый сервером тип с наибольшим весом.

Accept: text/html, application/xhtml+xml, */*;q=0.8

Клиент API, запрашивающий JSON с запасным вариантом XML, назначает XML более низкое значение качества.

Accept: application/json, application/xml;q=0.9

ИИ-агент запрашивает страницу в формате Markdown, чтобы сократить расход токенов, с запасным вариантом HTML.

Accept: text/markdown, text/html;q=0.9

ИИ-агенты и согласование содержимого

Провайдеры CDN вроде Cloudflare на лету преобразуют HTML-страницы в Markdown, когда запрос содержит Accept: text/markdown. Такое преобразование сокращает количество токенов до 80%, что делает согласование содержимого практичной оптимизацией для агентов и сканеров на базе LLM.

Клиент API, запрашивающий структурированные ответы об ошибках, использует application/problem+json наряду с обычным типом содержимого. Сервер возвращает описание проблемы при ошибках и JSON при успешных ответах.

Accept: application/problem+json, application/json

Запрос, перечисляющий несколько текстовых форматов с явными приоритетами. text/html несёт вес по умолчанию 1.0, следом text/plain с 0.9, любой другой текстовый формат — 0.8, а всё остальное — 0.7.

Accept: text/html, text/plain;q=0.9, text/*;q=0.8, */*;q=0.7

Примечание

Когда два типа имеют одинаковое значение качества, приоритет получает более конкретный тип. Если и text/html, и text/* несут вес 1.0, сервер выберет text/html.