Какие HTTP-методы не должны содержать тело запроса (Body)?

«Какие HTTP-методы не должны содержать тело запроса (Body)?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Согласно спецификации HTTP/1.1 (RFC 7231), следующие методы не должны содержать тело (Body) в запросе:

  • GET — предназначен только для запроса (получения) данных от сервера.
  • HEAD — аналогичен GET, но сервер возвращает только заголовки ответа без тела.
  • OPTIONS — запрашивает информацию о доступных методах для целевого ресурса.
  • TRACE — используется для диагностики, сервер возвращает полученный запрос в теле ответа (транслитом).

Пример запроса GET без тела:

GET /api/v1/users?role=admin HTTP/1.1
Host: example.com
Accept: application/json

Важно: Хотя некоторые серверы и клиенты могут обработать тело у этих методов, это противоречит стандарту и может привести к непредсказуемому поведению. Методы POST, PUT, PATCH и DELETE, напротив, обычно используют тело для передачи данных.