Клиент отправляет запрос с заголовком Accept: application/json, но сервер отвечает Content-Type: text/html. Что это означает?

Если клиент отправляет заголовок Accept: application/json, он сообщает серверу, что предпочитает получить ответ в формате JSON. Однако сервер отвечает с заголовком Content-Type: text/html, то есть возвращает HTML.

Короткий ответ

Что ответить на собеседовании

Если клиент отправляет заголовок Accept: application/json, он сообщает серверу, что предпочитает получить ответ в формате JSON. Однако сервер отвечает с заголовком Content-Type: text/html, то есть возвращает HTML.

Подробный разбор

Ответ с пояснениями

Условие

Клиент отправляет запрос с заголовком Accept: application/json, но сервер отвечает Content-Type: text/html. Что это означает?

  • Сервер нарушил HTTP-протокол
  • Сервер проигнорировал предпочтение клиента и вернул доступный формат
  • Клиент обязан отклонить такой ответ
  • Это возможно только при ошибке прокси

Ответ

Если клиент отправляет заголовок Accept: application/json, он сообщает серверу, что предпочитает получить ответ в формате JSON. Однако сервер отвечает с заголовком Content-Type: text/html, то есть возвращает HTML.

Это не обязательно нарушение протокола. Сервер может проигнорировать предпочтение клиента и вернуть формат, который у него есть или который он считает подходящим. В HTTP протоколе нет строгого требования, что сервер обязан строго следовать заголовку Accept — это рекомендация.

Клиент не обязан отклонять такой ответ, но должен понимать, что формат ответа отличается от ожидаемого.

Ошибка прокси — не единственная причина такого поведения, это вполне возможно и на стороне сервера.

Правильный ответ: Сервер проигнорировал предпочтение клиента и вернул доступный формат.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку