В прошлом уроке мы разобрали методы запроса и идемпотентность — разные способы «попросить» сервер что-то сделать. Сервер получил запрос и как-то отреагировал. Но как понять ПО ОТВЕТУ, что вообще произошло: успех, ошибка, и если ошибка — то по чьей вине, клиента или сервера?
Чему научишься за этот урок:
— по первой цифре кода ответа определять класс результата (успех, редирект, ошибка клиента, ошибка сервера);
— по коду ответа говорить, чья это ошибка — клиента или сервера;
— объяснить, что такое заголовки запроса и ответа и зачем нужен HTTPS.
Коды ответа: три цифры, которые говорят многое
Код ответа (status code) — трёхзначное число, которое сервер возвращает вместе с каждым HTTP-ответом. Первая цифра сама по себе задаёт класс результата — не нужно помнить наизусть все коды, чтобы понять общий смысл ответа.
- 2xx — успех: запрос выполнен так, как задумано. 200 OK — запрос выполнен успешно; 201 Created — новая сущность создана.
- 3xx — редирект: ресурс переехал в другое место. 301 — ресурс постоянно перемещён.
- 4xx — ошибка на стороне клиента: проблема в том, что отправил или запросил клиент. 400 Bad Request — неверный запрос; 401 Unauthorized — не авторизован, нужна аутентификация; 403 Forbidden — авторизован, но доступ запрещён; 404 Not Found — ресурс не найден.
- 5xx — ошибка на стороне сервера: проблема внутри сервера, даже если клиент отправил всё правильно. 500 Internal Server Error — внутренняя ошибка сервера; 502 Bad Gateway — промежуточный сервер получил неверный ответ от вышестоящего; 503 Service Unavailable — сервис временно недоступен, например перегружен.
Кто виноват: клиент или сервер
Разделение на 4xx и 5xx — не формальность, а прямая подсказка, куда смотреть дальше. 4xx означает: сервер разобрался в запросе и говорит, что что-то не так с тем, что прислал клиент, — неверные данные, отсутствие прав, обращение к несуществующему ресурсу. 5xx означает обратное: клиент, возможно, сделал всё правильно, но сервер не справился сам — упал, перегрузился, получил неверный ответ от другой системы.
Практическое правило для старта диагностики: при 4xx начинать поиск стоит с того, что отправил клиент — данных, прав, адреса запроса (хотя иногда причина всё равно окажется в конфигурации сервера или в контракте между фронтом и бэком). При 5xx клиент, скорее всего, ни при чём, даже если отправил всё верно, — сервер не справился сам.
Заголовки
Заголовки (headers) — дополнительная информация, которая идёт вместе с запросом или ответом, но не является основным телом данных. Например: Content-Type сообщает, какого типа данные передаются (JSON, HTML и так далее); Authorization несёт данные для авторизации — например, токен, подтверждающий, что запрос отправлен от имени вошедшего пользователя.
HTTPS = HTTP + шифрование
HTTPS — это тот же HTTP, дополненный шифрованием с помощью протокола TLS. Данные между клиентом и сервером передаются в зашифрованном виде, что мешает третьим лицам их перехватить и прочитать — например, в открытой Wi-Fi сети в кафе.
Класс | Значение | Примеры ------+-------------------+--------------------------------- 2xx | успех | 200 OK, 201 Created 3xx | редирект | 301 4xx | ошибка КЛИЕНТА | 400, 401, 403, 404 5xx | ошибка СЕРВЕРА | 500, 502, 503
Итог:
— код ответа — первая подсказка, где искать причину проблемы;
— 4xx — сторона клиента, 5xx — сторона сервера, и это не совпадение, а прямое указание;
— заголовки — дополнительная информация при запросе/ответе (например, Content-Type, Authorization);
— HTTPS = HTTP + шифрование (протокол TLS).
Контрольный вопрос. Первая цифра кода ответа задаёт класс результата. Какой из вариантов описывает класс кодов, где проблема — в том, что отправил или запросил клиент?
Подсказка: Речь о ситуации, когда сервер работает исправно, но то, что ему прислали, было неверным или недопустимым.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Ученик перешёл по ссылке на курс, которого больше не существует. Какой код ответа означает «ресурс не найден»?
Подсказка: Название кода в английском языке дословно означает «не найдено».
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Заявка ученика на запись на курс успешно сохранена в базе данных, и сервер вернул код 201. Это ошибка на стороне клиента, ошибка на стороне сервера или успешный результат?
Подсказка: Класс 2xx в принципе не про ошибки — вспомни, что объединяет коды этого класса.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Что такое заголовки (headers) HTTP-запроса или ответа?
Подсказка: Подумай про Content-Type и Authorization — это не сами данные, а сведения о них.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. HTTPS — это HTTP, дополненный шифрованием с помощью протокола, который защищает данные от перехвата третьими лицами. Как называется этот протокол? Ответь одним словом (аббревиатура из трёх латинских букв).
Подсказка: Эта аббревиатура обычно упоминается рядом со словом HTTPS, когда объясняют, откуда берётся шифрование.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Какие из перечисленных кодов относятся к ошибкам НА СТОРОНЕ СЕРВЕРА (выбери все подходящие)?
Выберите все верные варианты.
Подсказка: Такие ошибки происходят, даже если клиент отправил абсолютно всё правильно, — дело в самом сервере.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Пользователь успешно вошёл в систему (аутентификация пройдена), но пытается открыть админ-панель, доступ к которой ему не разрешён. Какой код вернёт сервер?
Подсказка: Пользователь уже доказал, кто он, — вопрос не в том, кто он, а в том, что ему разрешено делать.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Ученик, не выполнивший вход в систему, попытался открыть страницу личного кабинета на нашем полигоне. Сервер вернул код 401. Чья это зона ответственности по правилу из урока? Ответь одним словом.
Подсказка: Посмотри, к какому классу кодов относится 401, и вспомни общее правило про этот класс.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Ученик перешёл по неверной (несуществующей) ссылке на страницу курса, и сервер вернул код 404. По правилу из урока чья это зона ответственности? Ответь одним словом.
Подсказка: 404 относится к тому же классу кодов, что и 401 из предыдущего задания.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Ученик оформлял оплату курса, всё ввёл верно, но в момент отправки данных сервер оказался перегружен и вернул код 500. Объясни в 2-3 предложениях: чья это зона ответственности по правилу из урока и почему в этом случае нет смысла просить ученика перепроверить введённые данные.
Критерий приёмки: указано, что 500 — ошибка НА СТОРОНЕ СЕРВЕРА (класс 5xx), и объяснено, что проблема не в данных, которые отправил клиент, а во внутреннем сбое сервера — поэтому перепроверка ввода ученика не поможет.
Подсказка: Подумай, при каком классе кодов дело вообще не в том, что и как ввёл пользователь.
✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.
Онлайн-проверка ответа появится позже
Задание. Ученик дважды пытался оплатить курс. Первая попытка: он оставил поле номера карты пустым, и сервер вернул код из класса 4xx. Он исправил поле и отправил снова — на этот раз сервер начал обрабатывать платёж, но в процессе сам упал и вернул код из класса 5xx. По правилу из урока, зоной чьей ответственности является ПЕРВАЯ из этих двух ошибок? Ответь одним словом.
Подсказка: Один из двух классов кодов относится к ошибкам того, кто отправил запрос, другой — к ошибкам того, кто его обрабатывал; вспомни, какой класс отвечает за что по смыслу, а не по порядку в тексте.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Что дальше
Мы научились по коду ответа понимать, где искать причину проблемы. Но как сервер вообще «запоминает», что вы уже вошли в систему, если каждый отдельный HTTP-запрос сам по себе независим и «не помнит» предыдущий? Разберём это в следующем уроке: cookies, кэш, хранилища браузера и разница между аутентификацией и авторизацией.
