Коды ответа HTTP

Справочник кодов ответа HTTP с пояснениями: что означает код, когда сервер его возвращает и где искать причину. Отдельно - нестандартные коды nginx и Cloudflare, которые встречаются в логах.

1xx - информационные

100
Continue
Заголовки запроса приняты, клиент может отправлять тело (ответ на Expect: 100-continue).
101
Switching Protocols
Сервер переключается на протокол из заголовка Upgrade, например на WebSocket.
102
Processing WebDAV
Запрос принят и ещё обрабатывается, окончательного ответа пока нет. Устарел.
103
Early Hints
Предварительные заголовки (обычно Link) до основного ответа: браузер может заранее загрузить ресурсы.

2xx - успешно

200
OK
Запрос выполнен успешно.
201
Created
Ресурс создан; его адрес обычно передаётся в заголовке Location.
202
Accepted
Запрос принят, но ещё не выполнен: обработка идёт асинхронно.
203
Non-Authoritative Information
Ответ успешный, но изменён промежуточным прокси.
204
No Content
Запрос выполнен, тела ответа нет. Частый ответ на DELETE и PUT.
205
Reset Content
Запрос выполнен, клиенту следует сбросить форму или представление.
206
Partial Content
Отдана часть ресурса по заголовку Range: докачка файлов, перемотка видео.
207
Multi-Status WebDAV
В теле ответа - отдельные статусы для нескольких операций.
208
Already Reported WebDAV
Элементы уже перечислены ранее в ответе 207.
226
IM Used
Ответ - результат дельта-кодирования (RFC 3229).

3xx - перенаправления

300
Multiple Choices
У ресурса несколько представлений, клиент выбирает одно.
301
Moved Permanently
Ресурс навсегда переехал по адресу из Location; поисковики переносят ссылочный вес. Метод POST браузеры могут сменить на GET.
302
Found
Временное перенаправление по адресу из Location. Метод POST браузеры могут сменить на GET.
303
See Other
Перейти на другой адрес методом GET - типичный ответ после отправки формы.
304
Not Modified
Ресурс не изменился с момента кеширования (If-None-Match, If-Modified-Since), тело не передаётся.
305
Use Proxy
Ресурс доступен только через прокси. Устарел и не поддерживается браузерами.
307
Temporary Redirect
Временное перенаправление с сохранением метода и тела запроса.
308
Permanent Redirect
Постоянное перенаправление с сохранением метода и тела запроса.

4xx - ошибки клиента

400
Bad Request
Некорректный запрос: синтаксическая ошибка или неверные параметры.
401
Unauthorized
Нужна аутентификация; способ указан в заголовке WWW-Authenticate.
402
Payment Required
Зарезервирован для оплаты; некоторые API отвечают так при исчерпанном тарифе.
403
Forbidden
Доступ запрещён: сервер понял запрос, но отказывается его выполнять.
404
Not Found
Ресурс не найден.
405
Method Not Allowed
Метод не поддерживается ресурсом; допустимые перечислены в заголовке Allow.
406
Not Acceptable
Нет представления, подходящего под заголовки Accept клиента.
407
Proxy Authentication Required
Нужна аутентификация на прокси-сервере.
408
Request Timeout
Сервер не дождался запроса от клиента и закрыл соединение.
409
Conflict
Запрос конфликтует с текущим состоянием ресурса: устаревшая версия, дубликат.
410
Gone
Ресурс удалён навсегда и больше не появится.
411
Length Required
Сервер требует заголовок Content-Length.
412
Precondition Failed
Не выполнено условие из заголовков If-Match, If-Unmodified-Since и подобных.
413
Content Too Large
Тело запроса слишком большое. В nginx лимит задаёт client_max_body_size.
414
URI Too Long
Адрес запроса слишком длинный.
415
Unsupported Media Type
Формат тела запроса (Content-Type) не поддерживается.
416
Range Not Satisfiable
Запрошенный диапазон (Range) выходит за размер ресурса.
417
Expectation Failed
Ожидание из заголовка Expect не может быть выполнено.
418
I'm a teapot
Шуточный код из RFC 2324 ("я чайник"); иногда так отвечают ботам.
421
Misdirected Request
Запрос пришёл на сервер, который не может его обработать, - например, из-за общего соединения HTTP/2.
422
Unprocessable Content
Синтаксис верен, но данные не прошли проверку. Частый ответ API на ошибки валидации.
423
Locked WebDAV
Ресурс заблокирован.
424
Failed Dependency WebDAV
Не выполнена операция, от которой зависит текущая.
425
Too Early
Сервер не готов обрабатывать запрос, который может быть повторён (TLS early data).
426
Upgrade Required
Нужно перейти на другой протокол из заголовка Upgrade.
428
Precondition Required
Сервер требует условный запрос (If-Match), чтобы не потерять чужие изменения.
429
Too Many Requests
Превышен лимит запросов; когда повторить, подсказывает Retry-After.
431
Request Header Fields Too Large
Слишком большие заголовки запроса - чаще всего разросшиеся cookie.
451
Unavailable For Legal Reasons
Доступ закрыт по юридическим причинам.

5xx - ошибки сервера

500
Internal Server Error
Внутренняя ошибка сервера, например необработанное исключение в приложении.
501
Not Implemented
Сервер не поддерживает функциональность, нужную для запроса.
502
Bad Gateway
Прокси получил некорректный ответ от сервера приложения - например, nginx не достучался до Gunicorn или PHP-FPM.
503
Service Unavailable
Сервис временно недоступен: перегрузка или обслуживание; срок - в Retry-After.
504
Gateway Timeout
Прокси не дождался ответа от сервера приложения. В nginx - proxy_read_timeout.
505
HTTP Version Not Supported
Версия HTTP из запроса не поддерживается.
506
Variant Also Negotiates
Ошибка настройки согласования содержимого на сервере.
507
Insufficient Storage WebDAV
На сервере недостаточно места для выполнения запроса.
508
Loop Detected WebDAV
При обработке запроса обнаружен бесконечный цикл.
510
Not Extended
Нужны дополнительные расширения запроса. Устарел.
511
Network Authentication Required
Нужна авторизация в сети - например, на странице входа в публичный Wi-Fi.

Нестандартные коды nginx и Cloudflare

444
No Response nginx
nginx закрыл соединение без ответа (return 444) - так отсекают нежелательные запросы.
494
Request Header Too Large nginx
Заголовки запроса превысили large_client_header_buffers.
495
SSL Certificate Error nginx
Клиентский сертификат не прошёл проверку.
496
SSL Certificate Required nginx
Клиентский сертификат обязателен, но не предъявлен.
497
HTTP Request Sent to HTTPS Port nginx
Обычный HTTP-запрос пришёл на порт HTTPS.
499
Client Closed Request nginx
Клиент закрыл соединение, не дождавшись ответа. Встречается в логах nginx.
520
Web Server Returned an Unknown Error Cloudflare
Сервер сайта вернул пустой или непонятный ответ.
521
Web Server Is Down Cloudflare
Сервер сайта отклонил соединение.
522
Connection Timed Out Cloudflare
Не удалось установить соединение с сервером сайта.
523
Origin Is Unreachable Cloudflare
Сервер сайта недоступен: ошибка DNS или маршрутизации.
524
A Timeout Occurred Cloudflare
Соединение установлено, но сервер сайта слишком долго не отвечал.
525
SSL Handshake Failed Cloudflare
Не удалось установить TLS-соединение с сервером сайта.
526
Invalid SSL Certificate Cloudflare
Сертификат сервера сайта недействителен.