Коды состояния HTTP
Ответ HTTP начинается с трёхзначного кода и короткой фразы причины. Первая цифра — это вся сводка: 1xx — предварительно, 2xx — успешно, 3xx указывает куда-то ещё, 4xx обвиняет запрос, 5xx обвиняет сервер. Если вы помните только это, вы можете прочитать журнал, который вы никогда не видели раньше.
Фразы причины здесь — из RFC, на английском, потому что это то, что передаётся по проводу — сервер отправляет "Not Found", а не его перевод, и фраза, которую вы ищите в журнале, должна соответствовать байтам, которые фактически были отправлены.
Различия, которые вызывают реальные проблемы, находятся внутри классов, а не между ними: 401 против 403, 301 против 308 и 502 против 503 каждый отвечает на другой вопрос о том, что делать дальше, и каждый регулярно используется для другого.
1xx — информационный
3Предварительно: ответ не окончателен и потом следует другой.
| Код | Фраза причины | Что это означает |
|---|---|---|
| 100 | Continue | Заголовки получены, продолжайте отправлять тело. |
| 101 | Switching Protocols | Переключение протоколов — рукопожатие WebSocket. |
| 103 | Early Hints | Ранние подсказки: предварительно загрузите эти ресурсы, пока готовится реальный ответ. |
2xx — успех
5Запрос был получен, понят и принят.
| Код | Фраза причины | Что это означает |
|---|---|---|
| 200 | OK | Успех, с телом. |
| 201 | Created | Создано.Должна содержать заголовок Location, указывающий на новый ресурс. |
| 202 | Accepted | Принято для обработки, которая ещё не произошла. |
| 204 | No Content | Успех и намеренно никакого тела.Правильный ответ на DELETE или сохранение без возвращаемого значения. |
| 206 | Partial Content | Частичное содержание — ответ на запрос Range. Возобновляемые загрузки. |
3xx — перенаправление
6Ресурс находится где-то ещё, или ваша кэшированная копия по-прежнему хороша.
| Код | Фраза причины | Что это означает |
|---|---|---|
| 301 | Moved Permanently | Перемещено постоянно. Обновите свои ссылки; кэши могут хранить это вечно. |
| 302 | Found | Найдено — временное перенаправление.Широко реализовано как переключение метода на GET, который 307 исправляет. |
| 303 | See Other | Смотрите другое: получить результат с GET. Перенаправление после отправки формы POST. |
| 304 | Not Modified | Не изменено — ваша кэшированная копия актуальна. Отправлено без тела. |
| 307 | Temporary Redirect | Временное перенаправление, метод и тело сохранены. |
| 308 | Permanent Redirect | Постоянное перенаправление, метод и тело сохранены. |
4xx — ошибка клиента
14Запрос является проблемой. Повторение его без изменений снова не удастся.
| Код | Фраза причины | Что это означает |
|---|---|---|
| 400 | Bad Request | Сервер не может проанализировать запрос вообще. |
| 401 | Unauthorized | Не аутентифицирован — сервер не знает, кто вы.Названный Unauthorized, но это означает неаутентифицированный. Должно включать WWW-Authenticate. |
| 403 | Forbidden | Аутентифицирован и всё ещё не разрешён. Лучшие учётные данные не помогут. |
| 404 | Not Found | Такого ресурса нет, и сервер не скажет, был ли он когда-либо. |
| 405 | Method Not Allowed | Неправильный метод для этого URL.Должна список те, которые работают в заголовке Allow. |
| 406 | Not Acceptable | Ничего не доступно в формате, который будет использовать ваш заголовок Accept. |
| 409 | Conflict | Конфликты с текущим состоянием — редактирование против устаревшей версии. |
| 410 | Gone | Пропало: оно существовало и было намеренно удалено. Сильнее, чем 404. |
| 413 | Content Too Large | Тело больше, чем принимает сервер. |
| 415 | Unsupported Media Type | Сервер не обрабатывает это Content-Type. |
| 418 | I'm a teapot | Я чайник. Шутка 1998 года 1 апреля, навсегда зарезервированная. |
| 422 | Unprocessable Content | Правильно разобрано, содержимое недействительно — отсутствующее поле, плохое значение. |
| 429 | Too Many Requests | Ограничено по скорости.Ищите Retry-After перед повторной попыткой и экспоненциально отступите. |
| 451 | Unavailable For Legal Reasons | Заблокировано по правовым причинам. Число — кивок на Fahrenheit 451. |
5xx — ошибка сервера
6Запрос может быть в порядке. Это те, которые стоят повторной попытки.
| Код | Фраза причины | Что это означает |
|---|---|---|
| 500 | Internal Server Error | Необработанная ошибка на сервере. Ничего не нужно исправлять на вашей стороне. |
| 501 | Not Implemented | Сервер не реализует этот метод вообще. |
| 502 | Bad Gateway | Прокси достиг вышестоящего сервера и получил что-то непригодное в ответ. |
| 503 | Service Unavailable | Намеренно не обслуживается — перегружен или на обслуживание.Статус, который должен содержать Retry-After. |
| 504 | Gateway Timeout | Прокси дал отказал ожидать вышестоящего сервера. |
| 505 | HTTP Version Not Supported | Версия HTTP в запросе не поддерживается. |