Коды состояния HTTP
Все коды состояния HTTP простыми словами: что означает код, типичные причины, как исправить, пример ответа и RFC, где он определён.
Кодов состояния: 70
1xx Информационные
Промежуточные ответы: запрос получен, обработка продолжается.
100 Continue Продолжить Сервер получил заголовки запроса, и клиент может отправлять тело. Это промежуточный ответ, который приходит до окончательного статуса. 101 Switching Protocols Переключение протоколов Сервер соглашается перейти на протокол, запрошенный клиентом в заголовке Upgrade, чаще всего WebSocket. После этого ответа соединение работает по новому протоколу. 102 Processing Идёт обработка Промежуточный ответ WebDAV, сообщающий, что сервер всё ещё обрабатывает долгий запрос и клиенту не стоит обрывать соединение по тайм-ауту. Устарел и сегодня почти не используется. 103 Early Hints Ранние подсказки Промежуточный ответ, который заранее отправляет заголовки Link, чтобы браузер начал предзагружать CSS и шрифты или устанавливать соединения с другими источниками, пока сервер ещё формирует страницу.
2xx Успех
Запрос получен, понят и принят.
200 OK OK Запрос выполнен успешно. Для GET тело содержит ресурс, для POST — результат действия. 201 Created Создано Запрос выполнен и создал новый ресурс. Заголовок Location обычно указывает на него. 202 Accepted Принято Запрос принят к обработке, но обработка ещё не завершена. На момент ответа результат неизвестен. 203 Non-Authoritative Information Неавторитетная информация Запрос выполнен, но преобразующий прокси изменил содержимое ответа 200 от исходного сервера. 204 No Content Нет содержимого Запрос выполнен, тела ответа нет. Заголовки всё ещё могут нести метаданные, например новый ETag. 205 Reset Content Сбросить содержимое Запрос выполнен, и клиенту следует сбросить представление документа, например очистить отправленную форму. Тело не отправляется. 206 Partial Content Частичное содержимое Сервер возвращает только часть ресурса, как запрошено заголовком Range. Content-Range указывает, какие байты включены. 207 Multi-Status Многостатусный ответ Ответ WebDAV, XML-тело которого содержит отдельный статус для каждого из ресурсов, затронутых одним запросом. 208 Already Reported Уже сообщалось Используется внутри тела WebDAV 207 и означает, что ресурс уже был указан выше в ответе; это предотвращает дубли, когда привязки образуют циклы. 226 IM Used Использовано IM Сервер выполнил GET, применив одну или несколько манипуляций с экземпляром (дельта-кодирование), поэтому тело — это разница, а не весь ресурс.
3xx Перенаправление
Клиенту нужно сделать ещё шаг, обычно перейти по новому URL.
300 Multiple Choices Множество выборов У ресурса несколько представлений (язык, формат), и клиент или пользователь должен выбрать одно. Сервер может предложить предпочтительное через Location. 301 Moved Permanently Перемещено навсегда Ресурс навсегда перемещён по URL из Location. Клиенты и поисковики должны впредь использовать новый URL. 302 Found Найдено Ресурс временно находится по другому URL. Клиентам следует и дальше использовать исходный URL. 303 See Other Смотреть другое Сервер направляет клиента получить другой URL методом GET — обычно чтобы показать результат POST. 304 Not Modified Не изменялось Кэшированная копия у клиента всё ещё актуальна, поэтому сервер не отправляет тело. Это ответ на условный запрос с If-None-Match или If-Modified-Since. 305 Use Proxy Используйте прокси Устарел. Раньше просил клиента повторить запрос через прокси из Location. Браузеры игнорируют его из соображений безопасности. 307 Temporary Redirect Временное перенаправление Ресурс временно находится по другому URL, и клиент должен повторить там запрос с тем же методом и телом. 308 Permanent Redirect Постоянное перенаправление Ресурс перемещён навсегда, и клиенты должны повторить запрос по новому URL с тем же методом и телом.
4xx Ошибки клиента
В запросе ошибка, которую должен исправить клиент.
400 Bad Request Некорректный запрос Сервер не может обработать запрос, потому что он сформирован неверно: ошибка синтаксиса, неправильная структура или значения, которые нельзя разобрать. 401 Unauthorized Не авторизован В запросе нет действительных учётных данных. Несмотря на название, это означает «не аутентифицирован»: войдите или отправьте действительный токен. 402 Payment Required Требуется оплата Зарезервирован на будущее, но на практике сервисы возвращают его, когда для продолжения нужна оплата или платный тариф. 403 Forbidden Запрещено Сервер понял запрос, но отказывается его разрешить. Повторный вход не поможет, пока не изменятся права. 404 Not Found Не найдено Сервер не нашёл ничего по запрошенному URL. Код ничего не говорит о том, существовал ли ресурс раньше и появится ли снова. 405 Method Not Allowed Метод не разрешён URL существует, но не поддерживает использованный HTTP-метод. Заголовок Allow перечисляет допустимые методы. 406 Not Acceptable Неприемлемо Сервер не может сформировать ответ ни в одном формате, разрешённом заголовками Accept клиента. 407 Proxy Authentication Required Требуется аутентификация прокси Прокси между клиентом и сервером требует аутентификации перед пересылкой запроса. 408 Request Timeout Истекло время ожидания запроса Сервер закрыл соединение, потому что клиент не успел отправить запрос целиком. 409 Conflict Конфликт Запрос конфликтует с текущим состоянием ресурса, например из-за дубля или одновременного редактирования. 410 Gone Удалено Ресурс удалён навсегда, нового адреса нет. В отличие от 404, сервер заявляет об этом намеренно. 411 Length Required Требуется длина Сервер требует заголовок Content-Length, а в запросе его нет. 412 Precondition Failed Условие ложно Предусловие в заголовках, например If-Match или If-Unmodified-Since, оказалось ложным, поэтому сервер не применил запрос. 413 Content Too Large Слишком большое содержимое Тело запроса больше, чем сервер готов или может обработать. Раньше назывался Payload Too Large. 414 URI Too Long Слишком длинный URI URL запроса длиннее, чем сервер готов обработать. 415 Unsupported Media Type Неподдерживаемый тип данных Сервер отклоняет запрос, потому что тип данных тела (Content-Type) или кодирование не поддерживается. 416 Range Not Satisfiable Диапазон не достижим Заголовок Range запрашивает байты за пределами размера ресурса. 417 Expectation Failed Ожидание не оправдалось Сервер не может выполнить требование из заголовка Expect запроса, обычно Expect: 100-continue. 418 I'm a teapot Я — чайник Первоапрельская шутка из Hyper Text Coffee Pot Control Protocol: сервер — чайник и отказывается варить кофе. Некоторые сайты используют его в шутку или для блокировки ботов. 421 Misdirected Request Запрос направлен не туда Запрос попал на сервер, который не настроен отвечать для этого хоста, — часто потому, что соединение HTTP/2 повторно использовали для другого домена. 422 Unprocessable Content Необрабатываемое содержимое Запрос сформирован корректно, но содержит смысловые ошибки, поэтому сервер не может его обработать. Раньше назывался Unprocessable Entity. 423 Locked Заблокировано WebDAV: ресурс заблокирован, поэтому метод нельзя применить. 424 Failed Dependency Неудачная зависимость WebDAV: действие не выполнено, потому что зависело от другого действия того же запроса, которое завершилось ошибкой. 425 Too Early Слишком рано Сервер отказывается обрабатывать запрос, отправленный как ранние данные TLS 1.3 (0-RTT), потому что его могут воспроизвести повторно. 426 Upgrade Required Требуется обновление Сервер отказывается обрабатывать запрос по текущему протоколу и требует перейти, например, на TLS или HTTP/2, как указано в заголовке Upgrade. 428 Precondition Required Требуется предусловие Сервер требует, чтобы запрос был условным (If-Match и т. п.), чтобы избежать потерянных обновлений. 429 Too Many Requests Слишком много запросов Клиент отправил слишком много запросов за определённое время (ограничение частоты). Retry-After может подсказать, сколько ждать. 431 Request Header Fields Too Large Поля заголовка слишком большие Заголовки запроса слишком велики — либо один заголовок, либо все вместе. 451 Unavailable For Legal Reasons Недоступно по юридическим причинам Сервер не может предоставить ресурс по юридическим причинам, например из-за решения суда или государственной цензуры. Номер отсылает к роману «451 градус по Фаренгейту». 499 Client Closed Request (Нестандартный) Клиент закрыл запрос nginx записывает 499, когда клиент закрыл соединение до того, как сервер отправил ответ. Клиент этот код никогда не видит.
5xx Ошибки сервера
Сервер не смог выполнить корректный запрос.
500 Internal Server Error Внутренняя ошибка сервера Сервер столкнулся с непредвиденной ситуацией и не смог выполнить запрос. Это общий код для ошибок на стороне сервера. 501 Not Implemented Не реализовано Сервер не поддерживает нужную функциональность — обычно сам метод запроса. 502 Bad Gateway Ошибочный шлюз Шлюз или прокси получил некорректный ответ от вышестоящего сервера, которому переслал запрос. 503 Service Unavailable Сервис недоступен Сервер временно не может обработать запрос из-за перегрузки или техобслуживания. Retry-After может подсказать, когда повторить. 504 Gateway Timeout Шлюз не отвечает Шлюз или прокси не дождался своевременного ответа от вышестоящего сервера. 505 HTTP Version Not Supported Версия HTTP не поддерживается Сервер не поддерживает версию HTTP, использованную в запросе. 506 Variant Also Negotiates Вариант тоже согласуется Прозрачное согласование содержимого настроено неверно: выбранный вариант сам настроен на согласование, что создаёт цикл. 507 Insufficient Storage Недостаточно места Сервер не может сохранить представление, нужное для выполнения запроса (кончилось место на диске или квота). Пришёл из WebDAV. 508 Loop Detected Обнаружен цикл Сервер обнаружил бесконечный цикл при обработке запроса с Depth: infinity (WebDAV). Некоторые хостинги также используют код для лимитов ресурсов. 510 Not Extended Не расширено Для выполнения запроса серверу нужны дополнительные расширения (HTTP Extension Framework). Сейчас этот механизм считается историческим. 511 Network Authentication Required Требуется сетевая аутентификация Клиенту нужно аутентифицироваться для доступа к сети — обычно на странице авторизации (Wi-Fi в отеле или аэропорту). 520 Web Server Returned an Unknown Error (Нестандартный) Неизвестная ошибка Специфично для Cloudflare: исходный сервер вернул пустой, неизвестный или неожиданный ответ. 521 Web Server Is Down (Нестандартный) Веб-сервер не работает Специфично для Cloudflare: исходный сервер отказал в соединении. 522 Connection Timed Out (Нестандартный) Тайм-аут соединения Специфично для Cloudflare: истекло время установки TCP-соединения с исходным сервером. 523 Origin Is Unreachable (Нестандартный) Источник недоступен Специфично для Cloudflare: Cloudflare не может достучаться до исходного сервера — обычно из-за проблем с DNS или маршрутизацией. 524 A Timeout Occurred (Нестандартный) Истекло время ожидания Специфично для Cloudflare: соединение с исходным сервером установлено, но он не прислал HTTP-ответ вовремя (по умолчанию 100 секунд). 525 SSL Handshake Failed (Нестандартный) Сбой SSL-рукопожатия Специфично для Cloudflare: не удалось TLS-рукопожатие между Cloudflare и исходным сервером. 526 Invalid SSL Certificate (Нестандартный) Недействительный SSL-сертификат Специфично для Cloudflare: в режиме SSL Full (strict) сертификат исходного сервера недействителен, истёк, самоподписан или не соответствует имени хоста.