- PVSM.RU - https://www.pvsm.ru -
Всем привет! Я решил сделать для вас шпаргалку с основными статус-кодами протокола HTTP/HTTPS. Для более подробного погружения в тему рекомендую прочитать RFC 9110 [1], который регламентирует статус коды и весь протокол.
Код состояния ответа — это трёхзначный целочисленный код, описывающий результат запроса и семантику ответа, включая информацию об успешности запроса и его содержимом (если таковое имеется). Все допустимые коды состояния находятся в диапазоне от 100 до 599 включительно.
Первая цифра кода состояния определяет класс ответа. Последние две цифры не имеют никакого отношения к классификации.
Первая цифра может принимать пять значений:
1xx (Информационное сообщение): запрос получен, процесс продолжается
2xx (Успешно): запрос был успешно получен, понят и принят
3xx (Перенаправление): для завершения запроса необходимо предпринять дополнительные действия
4xx (Ошибка клиента): запрос содержит некорректный синтаксис или не может быть выполнен
5xx (Ошибка сервера): сервер не смог выполнить, по‑видимому, действительный запрос
Важное уточнение: коды состояния HTTP являются расширяемыми. Клиент не обязан понимать значение всех зарегистрированных кодов состояния, хотя такое понимание желательно.
Однако клиент ОБЯЗАН понимать класс любого кода состояния, определяемый первой цифрой, и рассматривать нераспознанный код состояния как эквивалентный коду состояния x00 этого класса.
Иногда используют статус коды вне диапазона 100-599 (например, 600-999), но они используются для внутренней связи не связанной с HTTP/HTTPS, например, ошибка конкретной библиотеки. Клиент такую ошибку может приравнивать к 5xx (Ошибка сервера).
Некоторые статус коды являются эвристически кэшируемыми (например, 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414 и 501), то есть браузер кэширует ответ с ними, даже если это не указано явно.
В документации встречается аббревиатура URI, кратко разберём что это такое сразу.
URI (Uniform Resource Identifier) — это компактная последовательность символов, идентифицирующая абстрактный или физический ресурс. Он включает в себя URN и URL.
URL (Uniform Resource Locator) — это тип URI, который идентифицирует ресурс через описание способа его нахождения (протокол и так далее).
URN (Uniform Resource Name) — это тип URI, который должен оставаться глобально уникальным и постоянным (имя ресурса, ISBN книг).
100 (Continue, продолжить) — сервер получил начальную часть запроса и ждёт недостающих данных, чтобы дать окончательный ответ клиенту.
101 (Switching Protocols, переключение протокола) — сервер понимает и готов выполнить запрос клиента, поступающий через поле заголовка Upgrade, об изменении используемого протокола приложения в данном соединении (так происходит переход с HTTP на websocket).
200 (Ok, успех) — запрос выполнен успешно, обычно есть содержимое в ответе.
201 (Created, создано) — запрос выполнен и в результате создан один или несколько новых ресурсов, содержимое ответа обычно содержит этот ресурс.
202 (Accepted, принято) — запрос принят к обработке, но обработка еще не завершена.
203 (Non-authoritative information, неавторитетная информация) — запрос был успешным, но содержимое было изменено по сравнению с ответом исходного сервера 200 (OK) преобразующим прокси-сервером.
204 (No content, нет содержимого) — сервер успешно выполнил запрос и в ответе нет дополнительного содержимого для отправки.
205 (Reset content, сброс содержимого) — сервер выполнил запрос и желает, чтобы пользовательский агент сбросил «представление документа», которое вызвало отправку запроса, до его исходного состояния, полученного от исходного сервера.
206 (Partial content, частичное содержание) — сервер успешно выполняет запрос диапазона для целевого ресурса, передавая одну или несколько частей выбранного представления.
300 (Multiple choices, множественный выбор) — указывает на то, что целевой ресурс имеет более одного представления, каждое со своим более конкретным идентификатором, и предоставляется информация об альтернативах.
301 (Moved permanently, перемещено навсегда) — указывает на то, что целевому ресурсу присвоен новый постоянный URI.
302 (Found, найдено) — указывает на то, что целевой ресурс временно находится по другому URI.
303 (See Other, смотри другое) — сервер перенаправляет пользовательский агент на другой ресурс, как указано в поле заголовка Location.
304 (Not Modified, не изменено) — указывает на то, что у нас и так актуальная версия ресурса и нет надобности сервера отправлять его снова.
307 (Temporary redirect, временное перенаправление) — целевой ресурс временно находится под другим URI, и пользовательский агент НЕ ДОЛЖЕН изменять метод запроса.
308 (Permanent redirect, постоянное перенаправление) — аналог 301, но с гарантией неизменности методов.
400 (Bad Request, неверный запрос) — сервер не может обработать запрос из-за ошибки клиента (например, если не подходит к pydantic схеме).
401 (Unauthorized, не авторизован) — запрос не выполнен, так как отсутствуют действительные учётные данные. (Кидаю её, если пользователь дёргает ручку без токена или с невалидным токеном).
403 (Forbidden, запрещено) — сервер понял запрос, но отказался его выполнить. (Кидаю, когда пользователь пытается редактировать не свой профиль).
404 (Not Found, не найдено) — сервер не обнаружил ресурс.
405 (Method not allowed, метод не разрешен) — метод известен серверу, но не применим к этому ресурсу.
408 (Request Time-out, тайм-аут запроса) — сервер не получил полный запрос в течение времени ожидания.
409 (Conflict, конфликт) — запрос не выполнен из-за конфликта с текущим состоянием ресурса. (Кидаю, когда пользователь с таким именем уже есть).
500 (Внутренняя ошибка сервера) — исключительная ситуация на сервере.
503 (Сервис недоступен) — сервер не может обработать запрос из-за перегрузки или тех. обслуживания.
На этом всё, до встречи!
Автор: PXI
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/seti/451169
Ссылки в тексте:
[1] RFC 9110: https://www.rfc-editor.org/rfc/rfc9110
[2] Источник: https://habr.com/ru/articles/1032498/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1032498
Нажмите здесь для печати.