В чем разница между HTTP-методами HEAD и GET?

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

Ответ

Метод HEAD идентичен методу GET с одним ключевым отличием: сервер НЕ ДОЛЖЕН возвращать тело сообщения (тело ответа) в ответе.

Назначение HEAD

Метод используется для получения только метаинформации (заголовков) о ресурсе, что позволяет:

  1. Проверить существование и доступность ресурса (по коду статуса).
  2. Проверить валидность кеша (используя заголовки Last-Modified или ETag).
  3. Узнать размер ресурса (Content-Length) или его тип (Content-Type) без загрузки всего содержимого, экономя трафик и время.

Пример запроса и ответа

HEAD /api/user/123 HTTP/1.1
Host: example.com

Ответ сервера (без тела):

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 256
Last-Modified: Wed, 21 Oct 2024 10:00:00 GMT
ETag: "abc123"

Важные особенности

  • Сервер должен возвращать для HEAD те же заголовки, что и для эквивалентного запроса GET.
  • Не все серверы или API могут корректно реализовать HEAD, поэтому иногда его эмулируют с помощью GET с последующим отбрасыванием тела.