Вебсправочник
Основы веб-разработки

Accept: какой формат ответа ожидает клиент

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

Назначение

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

Как это работает

Клиент перечисляет медиатипы, при необходимости задавая относительные предпочтения через q. Сервер выбирает представление по своим правилам. Если ответ меняется в зависимости от Accept, кешу обычно требуется соответствующий Vary.

Пример

GET /api/lessons HTTP/1.1
Accept: application/json, text/plain;q=0.5

HTTP/1.1 200 OK
Content-Type: application/json
Vary: Accept

{"items":["HTML","CSS"]}

Что должно получиться

В схеме клиент предпочитает JSON и допускает текст с меньшим весом. Ответ явно объявляет выбранный тип. Сам заголовок Accept не превращает любой серверный результат в корректный JSON.

Граница применения и частая ошибка

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

Самостоятельная проверка

На тестовом endpoint сравните запросы с двумя разными Accept. Проверьте Content-Type и тело каждого ответа. Затем убедитесь, что промежуточный кеш не отдаёт текстовый вариант клиенту, который ожидает JSON.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.