Коды состояния HTTP
Поиск по номеру или названию. Что означает каждый код и когда его использовать.
- Работает в вашем браузере — текст никуда не отправляется
- Без регистрации и квот, пользуйтесь бесплатно сколько угодно
Как это работает
Большинство кодов состояния очевидны, а некоторые действительно путают, особенно похожие по звучанию. Введите номер, слово вроде forbidden или 4xx, чтобы увидеть весь класс.
401 и 403, пара, которую все путают
401 Unauthorized на самом деле означает «не аутентифицирован»: сервер не знает, кто вы, и передача учётных данных может помочь. 403 Forbidden означает, что сервер прекрасно знает, кто вы, и всё равно вам нельзя. Названия исторические и малоинформативные; различие важно, потому что в одном случае предлагается войти, а в другом — нет.
301 и 302, и почему это важно для SEO
301 — постоянный и передаёт сигналы ранжирования на новый адрес. 302 — временный и оставляет их на прежнем. Использовать 302 для постоянного перемещения — распространённая и незаметно дорогая ошибка. 307 и 308 — современные аналоги, которые дополнительно гарантируют, что метод не изменится: POST остаётся POST, чего 301 и 302 исторически не обеспечивали.
422 для валидации
400 Bad Request означает, что сервер вообще не смог понять запрос. 422 Unprocessable Content означает, что он понял его прекрасно, но содержимое неверно: не хватает поля, недопустимый адрес электронной почты. Большинству API стоило бы возвращать 422 при ошибках валидации, а они по привычке возвращают 400.
Классы
1xx — информационные, 2xx — успех, 3xx — перенаправление, 4xx — вина клиента, 5xx — вина сервера. Последнее разделение полезно, когда при инциденте нужно распределить ответственность: всплеск 4xx означает, что вызывающие стороны делают что-то не так, всплеск 5xx — что не так у вас.
418
Я — чайник: шутка на 1 апреля 1998 года, которую позже всерьёз стандартизировали после того, как попытка убрать её из реализаций вызвала возмущение. Для реального использования код не предназначен, но он — подлинная часть спецификации.
Коды состояния HTTP: вопросы и ответы
Чем отличаются 401 и 403?
401 означает, что пользователь не аутентифицирован: сервер не знает, кто вы. 403 означает, что сервер знает, кто вы, но доступ всё равно запрещён.
Использовать 301 или 302?
301 — для постоянного перемещения, при нём передаётся ранжирование. 302 — для временного. Если HTTP-метод менять нельзя, используйте 308 и 307.
Какой код возвращать при ошибке валидации?
422 Unprocessable Content. 400 означает, что запрос вообще не удалось понять.
418 — это настоящий код?
Да. Он появился как первоапрельская шутка 1998 года и действительно стандартизирован, хотя для реального использования не предназначен.
Что означает 502?
Прокси получил некорректный ответ от сервера, стоящего за ним, — обычно приложение не работает или аварийно завершается.