HTTP-запросы: GET, HEAD и другие методы простым языком
Каждый раз, когда браузер открывает страницу, он отправляет HTTP-запрос на сервер. Но запросы бывают разные — и тип запроса во многом определяет, что именно произойдёт. Разберём основные методы простым языком. Отдельно посмотрим, чем полезна проверка доступности HEAD-запросом.
GET — самый распространённый метод
GET-запрос — это просьба «дай мне этот ресурс». Когда вы вводите адрес в браузере или кликаете на ссылку, браузер отправляет именно GET-запрос. Параметры передаются прямо в URL, например:
GET /search?q=мониторинг+сайтов&page=2 HTTP/1.1
Host: prufen.ru
Ключевые свойства GET:
- Идемпотентность: повторный запрос даёт тот же результат. Можно вызывать сколько угодно раз без побочных эффектов.
- Кешируемость: браузеры и прокси могут кешировать GET-ответы. Именно поэтому страницы загружаются быстрее при повторном посещении.
- Безопасность: GET не должен изменять данные на сервере — только читать.
- Ограничение длины URL: параметры в строке запроса ограничены (около 2000–8000 символов в зависимости от браузера и сервера).
GET-запросы сохраняются в истории браузера, логах сервера и могут быть добавлены в закладки. Поэтому никогда не передавайте пароли или чувствительные данные через GET.
HEAD — GET без тела ответа
HEAD-запрос работает точно так же, как GET, но сервер возвращает только заголовки — без тела ответа. Это мощный инструмент для проверки доступности и состояния ресурса.
HEAD / HTTP/1.1
Host: prufen.ru
Сервер ответит заголовками (статус, Content-Type, Content-Length, Last-Modified, ETag), но не отправит HTML-страницу. Это экономит трафик и время.
Где HEAD незаменим:
- Мониторинг доступности: проверить, что сервер отвечает 200, не скачивая весь контент. Это в 10–100 раз быстрее и дешевле GET.
- Валидация кеша: проверить, изменился ли ресурс (по ETag или Last-Modified), прежде чем загружать полную версию.
- Проверка размера файла: получить Content-Length, не скачивая файл.
- Проверка перенаправлений: отследить цепочку редиректов.
POST — отправка данных
POST используется для отправки данных на сервер: регистрация, логин, отправка формы, загрузка файла. Данные передаются в теле запроса, не в URL.
POST /api/login HTTP/1.1
Host: app.prufen.ru
Content-Type: application/json
{"email": "user@example.com", "password": "secret"}
POST не идемпотентен: повторная отправка создаёт новый ресурс или выполняет действие повторно. Браузер предупреждает об этом при нажатии «Обновить страницу» после POST.
PUT и PATCH — обновление данных
PUT полностью заменяет ресурс. Вы отправляете полный объект, и сервер записывает его вместо существующего. PUT идемпотентен — повторный PUT с теми же данными не изменит результат.
PATCH частично обновляет ресурс. Вы отправляете только изменившиеся поля. Это экономичнее PUT при работе с большими объектами.
DELETE — удаление ресурса
DELETE удаляет указанный ресурс. Метод идемпотентен: повторное удаление уже удалённого объекта возвращает 404, но не создаёт новых проблем.
Таблица HTTP-методов
| Метод | Назначение | Тело запроса | Тело ответа | Идемпотентен | Кешируется |
|---|---|---|---|---|---|
| GET | Получить ресурс | Нет | Да | Да | Да |
| HEAD | Получить заголовки | Нет | Нет | Да | Да |
| POST | Создать ресурс / действие | Да | Да | Нет | Нет |
| PUT | Заменить ресурс полностью | Да | Да | Да | Нет |
| PATCH | Частично обновить | Да | Да | Нет | Нет |
| DELETE | Удалить ресурс | Нет | Нет | Да | Нет |
| OPTIONS | Узнать поддерживаемые методы | Нет | Да | Да | Нет |
GET против HEAD для мониторинга
Для проверки доступности сайта HEAD однозначно предпочтительнее GET. Вот почему:
- Скорость: HEAD не передаёт тело ответа — проверка занимает 50–200 мс вместо 500–2000 мс для полной страницы.
- Нагрузка на сервер: HEAD не рендерит HTML, не выполняет SQL-запросы для формирования контента страницы.
- Трафик: мониторинг каждые 2 минуты × 5 локаций = 3600 проверок в сутки. HEAD экономит сотни мегабайт.
- Статус-код: и GET, и HEAD возвращают одинаковый статус (200, 301, 404, 500). Для мониторинга доступности этого достаточно.
Однако HEAD не подходит для проверки содержимого страницы. Если нужно убедиться, что конкретный текст присутствует на странице, — используйте GET. Для регулярных проверок аптайма оптимален именно мониторинг через HEAD.
HTTP-коды состояния
Сервер всегда отвечает трёхзначным кодом, который описывает результат запроса:
- 2xx — Успех: 200 OK (запрос выполнен), 201 Created (ресурс создан), 204 No Content (успех, без тела).
- 3xx — Перенаправление: 301 Moved Permanently (постоянный редирект), 302 Found (временный), 304 Not Modified (кеш актуален).
- 4xx — Ошибка клиента: 400 Bad Request (неверный запрос), 401 Unauthorized (не авторизован), 403 Forbidden (доступ запрещён), 404 Not Found (не найдено), 429 Too Many Requests (превышен лимит запросов).
- 5xx — Ошибка сервера: 500 Internal Server Error (внутренняя ошибка), 502 Bad Gateway (ошибка прокси), 503 Service Unavailable (сервер перегружен или на обслуживании).
HTTP-методы и мониторинг Пруфен
Пруфен, сервис мониторинга сайтов, использует оба типа запросов — в зависимости от типа проверки:
- Проверка доступности (HEAD): лёгкий запрос каждые 2 минуты. Фиксируем статус-код, время отклика, наличие редиректов.
- Проверка производительности (GET): полный запрос с измерением всех фаз — DNS, TCP-соединение, TLS-рукопожатие, время до первого байта (TTFB), загрузка тела. Строим детальный график.
- Проверка контента: GET + анализ тела ответа на наличие нужного текста или HTML-элементов.
- Проверка robots.txt: GET-запрос к /robots.txt, сохранение истории, анализ директив.
Понимание HTTP-методов помогает правильно настраивать мониторинг и интерпретировать результаты. Если сервер отвечает 405 Method Not Allowed на HEAD — это сигнал о нестандартной конфигурации, которую стоит проверить.
Начните мониторинг прямо сейчас
Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.
Создать аккаунт