HTTP-коди стану — це спосіб інтернету комунікувати між серверами та клієнтами. Щоразу, коли ваш браузер запитує веб-сторінку, API робить виклик або сервер обробляє дані, ці тризначні коди говорять вам точно, що сталося. Розуміння цих кодів є важливим для веб-розробників, SEO-спеціалістів та всіх, хто працює з веб-технологіями.

Цей повний посібник охоплює всі стандартні HTTP-коди стану від 100 до 511, організовані за категоріями. Кожен код стану включає практичні пояснення, реальні випадки використання, керівництво з впровадження та типові помилки, яких слід уникати.

Швидка довідка HTTP-кодів стану

Код стану Назва Категорія Перейти
100 Continue Інформаційні Деталі
101 Switching Protocols Інформаційні Деталі
102 Processing Інформаційні Деталі
103 Early Hints Інформаційні Деталі
200 OK Успіх Деталі
201 Created Успіх Деталі
202 Accepted Успіх Деталі
203 Non-Authoritative Information Успіх Деталі
204 No Content Успіх Деталі
205 Reset Content Успіх Деталі
206 Partial Content Успіх Деталі
207 Multi-Status Успіх Деталі
208 Already Reported Успіх Деталі
226 IM Used Успіх Деталі
300 Multiple Choices Перенаправлення Деталі
301 Moved Permanently Перенаправлення Деталі
302 Found Перенаправлення Деталі
303 See Other Перенаправлення Деталі
304 Not Modified Перенаправлення Деталі
305 Use Proxy (Застаріло) Перенаправлення Деталі
307 Temporary Redirect Перенаправлення Деталі
308 Permanent Redirect Перенаправлення Деталі
400 Bad Request Помилка клієнта Деталі
401 Unauthorized Помилка клієнта Деталі
403 Forbidden Помилка клієнта Деталі
404 Not Found Помилка клієнта Деталі
405 Method Not Allowed Помилка клієнта Деталі
406 Not Acceptable Помилка клієнта Деталі
407 Proxy Authentication Required Помилка клієнта Деталі
408 Request Timeout Помилка клієнта Деталі
409 Conflict Помилка клієнта Деталі
410 Gone Помилка клієнта Деталі
418 I’m a teapot Помилка клієнта Деталі
422 Unprocessable Entity Помилка клієнта Деталі
429 Too Many Requests Помилка клієнта Деталі
451 Unavailable For Legal Reasons Помилка клієнта Деталі
500 Internal Server Error Помилка сервера Деталі
501 Not Implemented Помилка сервера Деталі
502 Bad Gateway Помилка сервера Деталі
503 Service Unavailable Помилка сервера Деталі
504 Gateway Timeout Помилка сервера Деталі
505 HTTP Version Not Supported Помилка сервера Деталі
507 Insufficient Storage Помилка сервера Деталі
508 Loop Detected Помилка сервера Деталі
511 Network Authentication Required Помилка сервера Деталі

1xx Інформаційні відповіді

Ці коди вказують, що запит було отримано і процес продовжується.

Що таке код стану 100?

HTTP: 100 Continue

Коли і чому сервери повертають його: Сервер каже: «Я отримав першу частину вашого запиту, і поки все виглядає добре — продовжуйте надсилати решту!» Це трапляється, коли ви намагаєтеся завантажити щось велике (наприклад, відео), і сервер хоче перевірити, чи маєте ви дозвіл на завантаження, перш ніж ви витратите час на надсилання всього файлу.

Практичні випадки використання: Завантаження великих файлів у хмарне сховище, де сервер спочатку перевіряє, чи достатньо у вас місця; надсилання великих форм, де сервер перевіряє ваш логін перед прийняттям усіх даних; або будь-яка ситуація, де має сенс перевірити дозволи перед передачею великої кількості даних.

Як клієнти повинні реагувати на цей статус: Ваш браузер або додаток повинен негайно почати надсилати решту даних. Здебільшого це відбувається автоматично у фоновому режимі — ви навіть не помітите, що це відбувається.

Неправильне використання або помилкові реалізації: Надсилання цього старим браузерам, які його не розуміють; надсилання випадково, коли ніхто про це не просив; або забування перевірити, чи клієнт дійсно хоче цей двоетапний процес перед його використанням.

Документація Mozilla.org для додаткової інформації


Що таке код стану 101?

HTTP: 101 Switching Protocols

Коли і чому сервери повертають його: Сервер погоджується змінити спосіб комунікації з вами. Це як перехід від текстових повідомлень до телефонного дзвінка — ви попросили оновити з’єднання, і сервер сказав: «Звичайно, давайте зробимо це!»

Практичні випадки використання: Коли чат-додаток оновлюється з звичайного HTTP до WebSocket для обміну повідомленнями в реальному часі; коли браузер просить використовувати швидшу версію HTTP; або коли будь-який додаток потребує переходу на інший метод комунікації для кращих функцій.

Як клієнти повинні реагувати на цей статус: Негайно почніть використовувати новий протокол комунікації. Це як зміна мови посеред розмови — як тільки ви обидва погодилися, ви одразу починаєте говорити новою мовою.

Неправильне використання або помилкові реалізації: Перемикання без запиту; спроба перейти на те, що сервер насправді не підтримує; або забування вказати, на який протокол ви переходите.

Документація Mozilla.org для додаткової інформації


Що таке код стану 102?

HTTP: 102 Processing

Коли і чому сервери повертають його: Сервер каже: «Я все ще працюю над вашим запитом — не здавайтеся!» Це використовується, коли щось займає дуже багато часу для обробки, тому сервер надсилає це повідомлення, щоб запобігти думці, що він завис.

Практичні випадки використання: Конвертація великого відеофайлу в інший формат; обробка сотень файлів одночасно; генерація складних звітів, що займають хвилини; або будь-яка операція, що займає більше часу, ніж зазвичай.

Як клієнти повинні реагувати на цей статус: Продовжуйте терпляче чекати. Сервер може надіслати кілька таких повідомлень «все ще працюю», перш ніж нарешті дати вам фактичний результат. Не повторюйте запит — це просто почне весь процес спочатку.

Неправильне використання або помилкові реалізації: Використання для швидких операцій, які цього не потребують; надсилання занадто багатьох повідомлень «все ще працюю»; або забування надіслати остаточну відповідь після повідомлення про обробку.

Документація Mozilla.org для додаткової інформації


Що таке код стану 103?

HTTP: 103 Early Hints

Коли і чому сервери повертають його: Сервер дає вам попереднє повідомлення про ресурси, які вам, ймовірно, знадобляться незабаром. Це як ресторан, що каже: «Поки я готую ваше замовлення, ви можете взяти серветки та столові прибори».

Практичні випадки використання: Повідомлення браузерам почати завантажувати CSS та JavaScript файли, поки сервер готує HTML; попереднє завантаження шрифтів, які знадобляться сторінці; або підготовка з’єднань з іншими серверами, які використовуватиме сторінка.

Як клієнти повинні реагувати на цей статус: Почніть завантажувати запропоновані ресурси у фоновому режимі, чекаючи на реальну відповідь. Це робить сторінки швидшими, тому що деяка робота починається раніше.

Неправильне використання або помилкові реалізації: Надсилання підказок, але ніколи не надсилання фактичної відповіді; пропонування ресурсів, які насправді не потрібні; або перевантаження клієнта занадто багатьма непотрібними підказками попереднього завантаження.

Документація Mozilla.org для додаткової інформації


2xx Успіх

Ці коди вказують, що запит було успішно отримано, зрозуміло та прийнято.

Що таке код стану 200?

HTTP: 200 OK

Коли і чому сервери повертають його: Це відповідь «все спрацювало ідеально». Сервер знайшов те, що ви хотіли, зробив те, що ви просили, і ось ваш результат. Це найпоширеніше повідомлення про успіх, яке ви побачите.

Практичні випадки використання: Успішне завантаження будь-якої веб-сторінки; отримання даних з API; завантаження файлу; подання форми, яка спрацювала правильно; або практично будь-який час, коли запит успішний без жодних проблем.

Як клієнти повинні реагувати на цей статус: Використовуйте дані, що повернулися — покажіть веб-сторінку, обробіть JSON-дані, збережіть файл або що має сенс для вашого додатку. Це «нормальна» відповідь, для обробки якої все розроблено.

Неправильне використання або помилкові реалізації: Казати «200 OK», але включати повідомлення про помилку у відповідь (заплутано!); використовувати 200, коли ви створили щось нове (використовуйте 201 замість цього); або повертати 200 без даних, коли дані очікувалися.

Документація Mozilla.org для додаткової інформації


Що таке код стану 201?

HTTP: 201 Created

Коли і чому сервери повертають його: Сервер успішно створив щось нове на основі вашого запиту. Це не просто «OK» — це конкретно «Я зробив нову річ, яку ви просили!»

Практичні випадки використання: Створення нового облікового запису користувача; публікація нового твіту або оновлення статусу; завантаження файлу, який зберігається як новий ресурс; додавання нового товару в кошик; або будь-який час, коли ваш запит призводить до збереження чогось нового.

Як клієнти повинні реагувати на цей статус: Шукайте заголовок Location, який зазвичай вказує, де знайти щойно створену річ. Ви можете перенаправити на новий ресурс або оновити свій UI, щоб показати, що створення було успішним.

Неправильне використання або помилкові реалізації: Використання 201 при оновленні існуючих речей (для цього є 200); забування включити розташування нового ресурсу; або використання 201, коли насправді нічого не було створено.

Документація Mozilla.org для додаткової інформації


Що таке код стану 202?

HTTP: 202 Accepted

Коли і чому сервери повертають його: Сервер прийняв ваш запит, але ще не закінчив його обробку. Це як здати речі в хімчистку — вони взяли ваш одяг і дали вам квитанцію, але чистка ще не завершена.

Практичні випадки використання: Надсилання електронних листів (прийнято до доставки, але ще не надіслано); запуск великого експорту даних, який буде надіслано електронною поштою, коли буде готовий; завдання обробки відео; або будь-яке завдання, яке ставиться в чергу для пізнішої обробки.

Як клієнти повинні реагувати на цей статус: Не очікуйте негайних результатів. Вам знадобиться інший спосіб перевірити, чи завершено роботу — можливо, опитування іншої кінцевої точки, очікування електронного листа або перевірка webhook-сповіщення.

Неправильне використання або помилкові реалізації: Використання 202 для речей, які насправді вже завершені; відсутність способу перевірити статус пізніше; або використання 202, коли завдання може не виконатися (без попередження клієнта про цю можливість).

Документація Mozilla.org для додаткової інформації


Що таке код стану 203?

HTTP: 203 Non-Authoritative Information

Коли і чому сервери повертають його: Запит успішний, але відповідь була змінена чимось посередині (наприклад, проксі або кешем). Це як гра в зіпсований телефон — повідомлення дійшло, але могло трохи змінитися по дорозі.

Практичні випадки використання: Коли корпоративний проксі додає або видаляє певні заголовки; коли кеш-сервер модифікує відповіді для економії пропускної здатності; або коли фільтри контенту коригують те, що ви бачите, на основі політик.

Як клієнти повинні реагувати на цей статус: Використовуйте відповідь нормально, але знайте, що це може бути не зовсім те, що надіслав оригінальний сервер. Вона все ще дійсна, просто потенційно змінена.

Неправильне використання або помилкові реалізації: Відсутність прозорості щодо модифікацій; використання 203, коли насправді нічого не було змінено; або модифікація відповідей способами, що порушують функціональність.

Документація Mozilla.org для додаткової інформації


Що таке код стану 204?

HTTP: 204 No Content

Коли і чому сервери повертають його: Сервер успішно виконав те, що ви просили, але не має чого надсилати назад. Це як успішне видалення чогось — видалення спрацювало, але нема чого показати, бо це зникло!

Практичні випадки використання: Видалення записів; оновлення налаштувань, де вам не потрібні підтверджувальні дані назад; тихе збереження налаштувань у фоновому режимі; або будь-яка успішна дія, де тіло відповіді було б безглуздим.

Як клієнти повинні реагувати на цей статус: Вважайте це успіхом, але не очікуйте жодних даних. Ідеально підходить для AJAX-запитів, де вам просто потрібно знати, що щось спрацювало. Сторінка не повинна оновлюватися або змінюватися, якщо ваш JavaScript не вирішить щось оновити.

Неправильне використання або помилкові реалізації: Включення даних відповіді з 204 (це не дозволено!); використання 204, коли клієнт, ймовірно, хоче бачити оновлені дані; або використання 204 для помилок.

Документація Mozilla.org для додаткової інформації


Що таке код стану 205?

HTTP: 205 Reset Content

Коли і чому сервери повертають його: Сервер каже вашому додатку очистити форму або скинути вигляд. Це як успішно подати опитування і мати форму, яка автоматично очищається для наступної людини.

Практичні випадки використання: Після подання форми введення даних, яка потребує повторного використання; завершення опитування, яке повинно скинутися для наступного респондента; або будь-яка ситуація, де UI повинен повернутися до початкового стану після успіху.

Як клієнти повинні реагувати на цей статус: Очистіть усі поля форми, скиньте вигляд документа або поверніть інтерфейс до його початкового стану. З цією відповіддю не надходять дані — це просто інструкція скинути.

Неправильне використання або помилкові реалізації: Надсилання даних з відповіддю 205 (вона повинна бути порожньою); використання 205, коли ви насправді не хочете очищення форми; або використання його, коли простий 204 був би кращим.

Документація Mozilla.org для додаткової інформації


Що таке код стану 206?

HTTP: 206 Partial Content

Коли і чому сервери повертають його: Сервер надсилає лише частину файлу, тому що це те, що ви просили. Це як просити сторінки 50-60 книги замість усієї книги.

Практичні випадки використання: Потокове відео, де ви можете переходити до різних частин; відновлення перерваних завантажень з місця зупинки; завантаження великих файлів частинами; або ефективна реалізація функцій «завантажити більше».

Як клієнти повинні реагувати на цей статус: Обробіть частковий контент і, можливо, запросіть більше частин, якщо потрібно. Відеоплеєри використовують це для перемотування, а менеджери завантажень — для відновлення.

Неправильне використання або помилкові реалізації: Надсилання 206, коли ніхто не просив частковий контент; надсилання неправильного діапазону байтів; відсутність підтримки діапазонних запитів, коли вони були б корисними; або плутанина з заголовками Content-Range.

Документація Mozilla.org для додаткової інформації


Що таке код стану 207?

HTTP: 207 Multi-Status

Коли і чому сервери повертають його: Було виконано кілька операцій, і кожна має свій власний результат. Це як подати пакет заявок на роботу і отримати окремі відповіді на кожну в одному конверті.

Практичні випадки використання: Масові операції, де ви оновлюєте кілька елементів одночасно; операції WebDAV над кількома файлами; пакетні API-запити; або будь-який час, коли вам потрібно повідомити окремі результати для кількох операцій.

Як клієнти повинні реагувати на цей статус: Проаналізуйте тіло відповіді (зазвичай XML), щоб побачити окремий результат для кожної операції. Деякі могли успішно виконатися, тоді як інші не виконалися, і вам потрібно обробити кожну відповідно.

Неправильне використання або помилкові реалізації: Використання 207 для одиничних операцій; неправильне структурування мультистатусної відповіді; або використання його, коли всі операції мали однаковий результат (просто використовуйте цей єдиний код стану замість цього).

Документація Mozilla.org для додаткової інформації


Що таке код стану 208?

HTTP: 208 Already Reported

Коли і чому сервери повертають його: У мультистатусній відповіді це вказує, що інформація про цей ресурс вже була включена раніше. Це як сказати «дивись вище», щоб не повторюватися.

Практичні випадки використання: При переліку вмісту каталогу, що включає символічні посилання; запобігання нескінченним циклам у рекурсивних операціях; або уникнення дублювання інформації в складних відповідях WebDAV.

Як клієнти повинні реагувати на цей статус: Пропустіть обробку цього ресурсу, оскільки ви вже обробили його раніше у відповіді. Це запобігає подвійній обробці та нескінченним циклам.

Неправильне використання або помилкові реалізації: Використання 208 поза належним мультистатусним контекстом; позначення речей як «вже повідомлено», коли вони не були; або створення заплутаних відповідей через надмірне використання цього статусу.

Документація Mozilla.org для додаткової інформації


Що таке код стану 226?

HTTP: 226 IM Used

Коли і чому сервери повертають його: Сервер застосував одне або більше перетворень до відповіді. Це як замовити документ і отримати стиснену або оптимізовану версію для економії пропускної здатності.

Практичні випадки використання: Дельта-кодування, де надсилаються лише зміни з минулого разу; системи стиснення, що трансформують контент на льоту; або будь-яке перетворення для економії пропускної здатності, яке запросив клієнт.

Як клієнти повинні реагувати на цей статус: Обробіть трансформований контент, використовуючи метод, вказаний у заголовках. Клієнт повинен розуміти трансформацію, щоб правильно використовувати відповідь.

Неправильне використання або помилкові реалізації: Використання 226 без зазначення, які трансформації були застосовані; застосування трансформацій, які клієнт не запитував; або використання 226 для стандартного стиснення (яке не потребує спеціального статусу).

Документація Mozilla.org для додаткової інформації


3xx Перенаправлення

Ці коди вказують, що для завершення запиту необхідно виконати додаткові дії.

Що таке код стану 300?

HTTP: 300 Multiple Choices

Коли і чому сервери повертають його: Існує кілька версій запитуваного ресурсу, і сервер не може автоматично вибрати одну. Це як просити «інструкцію», коли є версії різними мовами.

Практичні випадки використання: Коли контент доступний кількома мовами або форматами; коли є різні версії для різних пристроїв; або коли сервер дійсно не може вирішити, яку версію ви хочете.

Як клієнти повинні реагувати на цей статус: Представте вибір користувачу або виберіть один на основі налаштувань (наприклад, мовних). Відповідь повинна містити список усіх доступних варіантів.

Неправильне використання або помилкові реалізації: Використання 300, коли сервер міг би розумно вибрати значення за замовчуванням; нечітке представлення доступних варіантів; або використання його для простих перенаправлень (використовуйте 301/302 замість цього).

Документація Mozilla.org для додаткової інформації


Що таке код стану 301?

HTTP: 301 Moved Permanently

Коли і чому сервери повертають його: Ресурс назавжди переміщено на нову адресу. Це як коли бізнес переїжджає на нове місце і вішає постійний знак переадресації — оновіть свою адресну книгу!

Практичні випадки використання: Коли веб-сайти назавжди реструктурують свої URL-адреси; перехід з HTTP на HTTPS; коли компанії проводять ребрендинг і змінюють домени; або об’єднання кількох сторінок в одну для кращої організації.

Як клієнти повинні реагувати на цей статус: Автоматично перейдіть на нову URL-адресу і запам’ятайте її на наступний раз. Браузери оновлюють закладки, а пошукові системи оновлюють свої індекси, щоб вказувати на нове розташування.

Неправильне використання або помилкові реалізації: Використання 301 для тимчасових переміщень (використовуйте 302 замість цього); створення ланцюгів перенаправлень, що кидають користувачів туди-сюди; або використання 301, коли ви можете захотіти змінити його пізніше.

Документація Mozilla.org для додаткової інформації


Що таке код стану 302?

HTTP: 302 Found

Коли і чому сервери повертають його: Ресурс тимчасово знаходиться в іншому місці. Це як табличка магазину «Сьогодні ми на ярмарку» — завтра вони повернуться на своє звичайне місце.

Практичні випадки використання: Перенаправлення користувачів під час технічного обслуговування сайту; A/B тестування, де деякі користувачі переходять на іншу версію; сезонні акції, що перенаправляють на спеціальні сторінки; або балансування навантаження між серверами.

Як клієнти повинні реагувати на цей статус: Перейдіть на тимчасове розташування зараз, але продовжуйте використовувати оригінальну URL-адресу для майбутніх запитів. Не оновлюйте закладки або постійні посилання.

Неправильне використання або помилкові реалізації: Використання 302 для постійних переміщень (використовуйте для них 301); створення циклів перенаправлення, де A надсилає до B, а B надсилає назад до A; або використання 302, коли вам конкретно потрібно зберегти HTTP-метод (використовуйте 307).

Документація Mozilla.org для додаткової інформації


Що таке код стану 303?

HTTP: 303 See Other

Коли і чому сервери повертають його: Після обробки вашого запиту (зазвичай POST) сервер хоче, щоб ви подивилися на іншу сторінку за допомогою GET. Це як подати форму і бути перенаправленим на сторінку «дякуємо».

Практичні випадки використання: Після подання форми перенаправити на сторінку підтвердження; після здійснення платежу перенаправити на квитанцію; будь-який час, коли ви хочете запобігти дублюванню подань, коли користувачі оновлюють сторінку.

Як клієнти повинні реагувати на цей статус: Зробіть новий GET-запит на нову URL-адресу. Це запобігає випадковому повторному поданню, якщо користувачі оновлюють сторінку, оскільки оновлення просто перезавантажить остаточну сторінку, а не повторно подасть форму.

Неправильне використання або помилкові реалізації: Використання 303, коли ви хочете зберегти оригінальний метод (використовуйте 307); використання його для постійних перенаправлень (використовуйте 301); або забування, що перенаправлення завжди використовуватиме GET незалежно від оригінального методу.

Документація Mozilla.org для додаткової інформації


Що таке код стану 304?

HTTP: 304 Not Modified

Коли і чому сервери повертають його: Ресурс не змінився з моменту вашого останнього запиту, тому використовуйте свою кешовану копію. Це як перевірити, чи був документ оновлений, і почути «ні, все ще той самий».

Практичні випадки використання: Кешування браузера, де він перевіряє, чи змінилися файли зображень/CSS/JavaScript; відповіді API, які рідко змінюються; або будь-яка ситуація, де ви хочете заощадити пропускну здатність, не надсилаючи повторно незмінені дані.

Як клієнти повинні реагувати на цей статус: Використовуйте кешовану версію, яка у вас уже є. З цією відповіддю не надходять нові дані — вона просто підтверджує, що ваша кешована копія все ще актуальна.

Неправильне використання або помилкові реалізації: Надсилання даних з 304 (вона повинна бути порожньою); казати «не змінено», коли насправді було змінено; або неправильна обробка спеціальних заголовків, що забезпечують роботу цього.

Документація Mozilla.org для додаткової інформації


Що таке код стану 305?

HTTP: 305 Use Proxy

Коли і чому сервери повертають його: Цей код стану застарів і ніколи не повинен використовуватися. Він мав проблеми з безпекою і був покинутий веб-спільнотою.

Практичні випадки використання: Жодних — цей код стану вилучено і не повинен використовуватися в жодному сучасному додатку.

Як клієнти повинні реагувати на цей статус: Сучасні клієнти повинні ігнорувати цей код стану через проблеми безпеки. Це історичний артефакт.

Неправильне використання або помилкові реалізації: Використання цього коду стану взагалі є помилкою. Він застарів з вагомих причин безпеки і ніколи не повинен з’являтися в сучасних додатках.

Документація Mozilla.org для додаткової інформації


Що таке код стану 307?

HTTP: 307 Temporary Redirect

Коли і чому сервери повертають його: Тимчасово перенаправити на іншу URL-адресу, але на відміну від 302, клієнт повинен використовувати той самий метод. Якщо оригінальний запит був POST, перенаправлення також повинно бути POST.

Практичні випадки використання: API-кінцеві точки на технічному обслуговуванні, які повинні зберігати метод; балансування навантаження, що підтримує цілісність запиту; або будь-яке тимчасове перенаправлення, де зміна з POST на GET щось зламає.

Як клієнти повинні реагувати на цей статус: Перенаправте на нову URL-адресу, використовуючи точно такий самий метод і тіло, як і оригінальний запит. Це суворіше, ніж перенаправлення 302.

Неправильне використання або помилкові реалізації: Використання 307 для постійних переміщень (використовуйте 308); використання його, коли збереження методу не має значення (302 простіше); або не усвідомлення, що клієнти повинні повторно надіслати тіло запиту.

Документація Mozilla.org для додаткової інформації


Що таке код стану 308?

HTTP: 308 Permanent Redirect

Коли і чому сервери повертають його: Як 301, але гарантує, що метод не зміниться. Якщо ви зробили POST на стару URL-адресу, ви повинні зробити POST і на нову.

Практичні випадки використання: Постійне переміщення API-кінцевих точок, що приймають POST/PUT/DELETE; реструктуризація RESTful-сервісів зі збереженням цілісності методу; або будь-яке постійне переміщення, де HTTP-метод повинен бути збережений.

Як клієнти повинні реагувати на цей статус: Назавжди оновіть посилання на використання нової URL-адреси і завжди використовуйте той самий HTTP-метод, що й оригінальний запит, при слідуванні перенаправленню.

Неправильне використання або помилкові реалізації: Використання 308 для тимчасових переміщень (використовуйте 307); використання його, коли збереження методу не має значення (301 ширше підтримується); або забування, що це новіший код стану, який старіші клієнти можуть не розуміти.

Документація Mozilla.org для додаткової інформації


4xx Помилки клієнта

Ці коди вказують, що клієнт, схоже, допустив помилку.

Що таке код стану 400?

HTTP: 400 Bad Request

Коли і чому сервери повертають його: Ваш запит якимось чином неправильний або недійсний. Це як заповнити форму з електронною поштою в полі номера телефону — сервер не може це обробити, бо це не має сенсу.

Практичні випадки використання: Недійсний JSON у тілі запиту; відсутні обов’язкові параметри; неправильні типи даних (надсилання тексту, коли очікується число); неправильні URL-адреси; або будь-яка синтаксична помилка в запиті.

Як клієнти повинні реагувати на цей статус: Не повторюйте той самий запит — він знову не виконається. Спочатку виправте проблему. Перевірте тіло відповіді на деталі про те, що не так, і виправте це перед повторною спробою.

Неправильне використання або помилкові реалізації: Використання 400 для проблем автентифікації (використовуйте 401); повернення 400 для помилок сервера (використовуйте 5xx); надання розмитих повідомлень про помилки, що не допомагають виправити проблему; або використання 400 як універсального рішення для будь-якої помилки.

Документація Mozilla.org для додаткової інформації


Що таке код стану 401?

HTTP: 401 Unauthorized

Коли і чому сервери повертають його: Вам потрібно увійти в систему або надати облікові дані для доступу до цього ресурсу. Це як намагатися увійти в зону тільки для членів, не показавши членську картку.

Практичні випадки використання: Доступ до захищених API-кінцевих точок без токена; прострочені сесії входу; відсутні API-ключі; або будь-який запит до ресурсу, який вимагає підтвердження вашої особи.

Як клієнти повинні реагувати на цей статус: Запропонуйте користувачу увійти, перенаправте на сторінку входу або отримайте дійсні облікові дані перед повторною спробою. Для API отримайте свіжий токен автентифікації.

Неправильне використання або помилкові реалізації: Використання 401, коли облікові дані дійсні, але недостатні (використовуйте 403); забування включити інформацію про те, як автентифікуватися; або плутання автентифікації (хто ви) з авторизацією (що вам дозволено робити).

Документація Mozilla.org для додаткової інформації


Що таке код стану 403?

HTTP: 403 Forbidden

Коли і чому сервери повертають його: Сервер розуміє, хто ви, але не дозволить вам отримати доступ до цього ресурсу. Це як показати посвідчення для входу в VIP-зону, але вам кажуть, що вас немає у списку.

Практичні випадки використання: Спроба отримати доступ до функцій адміністратора як звичайний користувач; намагання переглянути приватні дані іншого користувача; географічні обмеження (контент недоступний у вашій країні); або блокування IP-адреси.

Як клієнти повинні реагувати на цей статус: Не намагайтеся повторити з тими самими обліковими даними — вони не спрацюють. Покажіть повідомлення «доступ заборонено» і, можливо, поясніть, як отримати належний доступ, якщо це застосовно.

Неправильне використання або помилкові реалізації: Використання 403, коли користувач не увійшов (використовуйте 401); використання 403 для ресурсів, які не існують, щоб приховати їх існування (спірно — можна використовувати 404); або нечіткість щодо того, чому доступ заборонено.

Документація Mozilla.org для додаткової інформації


Що таке код стану 404?

HTTP: 404 Not Found

Коли і чому сервери повертають його: Сервер не може знайти нічого за URL-адресою, яку ви запросили. Це як прийти на вуличну адресу, де просто порожня ділянка — або ви неправильно вказали адресу, або те, що там було, зникло.

Практичні випадки використання: Неправильне введення URL-адреси (наприклад, gooogle.com замість google.com); натискання на старі закладки на сторінки, які були видалені; слідування непрацюючим посиланням з інших веб-сайтів; помилки друку в API-кінцевих точках; або спроба отримати доступ до файлів, які були переміщені або перейменовані.

Як клієнти повинні реагувати на цей статус: Покажіть сторінку помилки, яка допомагає користувачам зрозуміти, що робити далі. Хороші сторінки 404 включають поле пошуку, посилання на популярні сторінки, спосіб повідомити про непрацююче посилання або навіть веселе повідомлення, щоб зробити помилку менш дратівливою.

Неправильне використання або помилкові реалізації: Використання 404, коли доступ заборонено (використовуйте 403 для «ви не можете це бачити»); повернення 404 для речей, які були навмисно видалені назавжди (розгляньте 410 «Gone»); показ загальних безкорисних сторінок помилок; або використання 404, щоб приховати від неавторизованих користувачів, що щось існує (хоча це спірно з точки зору безпеки).

Документація Mozilla.org для додаткової інформації


Що таке код стану 405?

HTTP: 405 Method Not Allowed

Коли і чому сервери повертають його: Ресурс існує, але не підтримує HTTP-метод, який ви використали. Це як намагатися штовхати двері, які відкриваються лише на себе — двері є, просто потрібно використовувати їх правильно.

Практичні випадки використання: Спроба DELETE на ресурсі, який доступний лише для читання; надсилання POST на кінцеву точку, яка приймає лише GET; спроба PUT на ресурсах, які не можна оновити; або використання користувацьких методів, які сервер не підтримує.

Як клієнти повинні реагувати на цей статус: Перевірте заголовок Allow, щоб побачити, які методи підтримуються, потім повторіть з відповідним методом. Не продовжуйте пробувати той самий метод — він не підтримується.

Неправильне використання або помилкові реалізації: Не включення обов’язкового заголовка Allow зі списком підтримуваних методів; використання 405, коли ресурс не існує (використовуйте 404); або повернення 405 для методів, які сервер повинен підтримувати, але ще не реалізував (розгляньте 501).

Документація Mozilla.org для додаткової інформації


Що таке код стану 406?

HTTP: 406 Not Acceptable

Коли і чому сервери повертають його: Сервер не може надати ресурс у форматі, який ви приймете. Це як просити меню французькою в ресторані, де є лише англійська та іспанська версії.

Практичні випадки використання: Запит JSON з кінцевої точки, яка надає лише XML; запит формату зображення, який сервер не підтримує; невдачі мовних переговорів; або будь-яка невідповідність узгодження контенту.

Як клієнти повинні реагувати на цей статус: Змініть свої заголовки Accept, щоб запросити формат, який сервер може надати, або обробляйте доступні формати. Відповідь може містити список доступних форматів.

Неправильне використання або помилкові реалізації: Надмірна суворість щодо форматів, коли ви могли б надати розумне значення за замовчуванням; використання 406 для помилок, не пов’язаних з узгодженням контенту; або нечітке зазначення, які формати доступні.

Документація Mozilla.org для додаткової інформації


Що таке код стану 407?

HTTP: 407 Proxy Authentication Required

Коли і чому сервери повертають його: Проксі-сервер між вами і пунктом призначення вимагає автентифікації. Це як необхідність показати посвідчення охоронцю, перш ніж ви зможете навіть потрапити до будівлі, куди хочете увійти.

Практичні випадки використання: Корпоративні проксі-сервери, що вимагають логін співробітника; мережеві шлюзи, що потребують автентифікації; платні проксі-сервіси, що вимагають облікових даних; або будь-яке налаштування автентифікованого проксі.

Як клієнти повинні реагувати на цей статус: Автентифікуйтеся з проксі-сервером (не сервером призначення), використовуючи метод, вказаний у заголовку Proxy-Authenticate, потім повторіть оригінальний запит.

Неправильне використання або помилкові реалізації: Плутання цього зі звичайною автентифікацією 401; не включення заголовка Proxy-Authenticate; або використання 407, коли автентифікації вимагає сервер призначення (не проксі).

Документація Mozilla.org для додаткової інформації


Що таке код стану 408?

HTTP: 408 Request Timeout

Коли і чому сервери повертають його: Сервер чекав, поки ви надішлете повний запит, але ви занадто довго. Це як почати замовляти в ресторані, але зробити таку довгу паузу, що офіціант іде.

Практичні випадки використання: Повільні мережеві з’єднання, що викликають затримки; завантаження великих файлів через погане з’єднання; клієнтські додатки, що зависають під час передачі запиту; або мережеві переривання під час надсилання даних.

Як клієнти повинні реагувати на цей статус: Ви можете повторити запит, бажано з кращим з’єднанням або меншим навантаженням. Розгляньте розбиття великих запитів на менші частини або покращення мережевих умов.

Неправильне використання або помилкові реалізації: Використання 408, коли сервер повільний (це 504); встановлення нерозумно коротких тайм-аутів; або використання 408 для тайм-аутів на рівні додатку, а не на рівні мережі.

Документація Mozilla.org для додаткової інформації


Що таке код стану 409?

HTTP: 409 Conflict

Коли і чому сервери повертають його: Ваш запит конфліктує з поточним станом ресурсу. Це як намагатися створити ім’я користувача, яке вже зайняте — операція має сенс, але її неможливо виконати прямо зараз.

Практичні випадки використання: Спроба створити дублікат запису; редагування документа, який хтось інший зараз редагує; конфлікти версій у спільних системах; або порушення бізнес-правил (наприклад, подвійне бронювання ресурсу).

Як клієнти повинні реагувати на цей статус: Вирішіть конфлікт, вибравши інше значення, об’єднавши зміни або дочекавшись вирішення конфлікту. Відповідь повинна пояснювати, у чому конфлікт і як його вирішити.

Неправильне використання або помилкові реалізації: Використання 409 для помилок валідації (розгляньте 422); відсутність пояснення, як вирішити конфлікт; використання 409 для проблем з дозволами (використовуйте 403); або повідомлення про конфлікти, які клієнт насправді не може вирішити.

Документація Mozilla.org для додаткової інформації


Що таке код стану 410?

HTTP: 410 Gone

Коли і чому сервери повертають його: Ресурс раніше тут був, але був навмисно видалений і не повернеться. Це як відвідати знесену будівлю — вона не просто тимчасово закрита, вона назавжди зникла.

Практичні випадки використання: Статті або пости, видалені за порушення політики; продукти, які назавжди зняті з виробництва; старі версії API, які були виведені з експлуатації; або будь-який контент, навмисно і назавжди видалений.

Як клієнти повинні реагувати на цей статус: Видаліть закладки, оновіть посилання та повідомте користувачів, що контент назавжди зник. Пошукові системи повинні видалити ці URL-адреси зі своїх індексів. Не продовжуйте перевіряти — це не повернеться.

Неправильне використання або помилкові реалізації: Використання 410 для тимчасових видалень (використовуйте 503); використання 410, коли ви можете відновити контент; використання 410 для речей, які ніколи не існували (використовуйте 404); або невпевненість, що видалення є постійним.

Документація Mozilla.org для додаткової інформації


Що таке код стану 418?

HTTP: 418 I’m a teapot

Коли і чому сервери повертають його: Це жартівливий код стану з першоквітневого RFC про керування кавоварками. Він означає: «Я — чайник, і ви попросили мене зварити каву, чого я не можу зробити».

Практичні випадки використання: Пасхальні яйця в додатках; демонстрація розширюваності HTTP в курсах програмування; додавання гумору в середовища розробки/тестування; або як грайлива відповідь у відповідних контекстах.

Як клієнти повинні реагувати на цей статус: Розпізнайте це як гумористичну відповідь і обробіть відповідно — можливо, покажіть веселе повідомлення про помилку або зображення, пов’язане з чаєм. Не очікуйте цього в серйозних виробничих середовищах.

Неправильне використання або помилкові реалізації: Використання 418 для реальних помилок у виробничих системах; надмірне використання до точки дратування; або повернення його користувачам, які не зрозуміють жарт.

Документація Mozilla.org для додаткової інформації


Що таке код стану 422?

HTTP: 422 Unprocessable Entity

Коли і чому сервери повертають його: Формат вашого запиту правильний, але контент не має сенсу. Це як правильно заповнити форму, але ввести неможливі дані — наприклад, бути 300 років або народитися в майбутньому.

Практичні випадки використання: Невдачі валідації форми (електронна пошта без символу @); порушення бізнес-правил (дата закінчення до дати початку); семантичні помилки в API-запитах; або будь-які логічні помилки в правильно відформатованих даних.

Як клієнти повинні реагувати на цей статус: Прочитайте деталі помилки, щоб зрозуміти, яка валідація не пройшла, виправте дані відповідно до вимог і повторіть подання. Структура була правильною; контент потребує коригування.

Неправильне використання або помилкові реалізації: Використання 422 для синтаксичних помилок (використовуйте 400); відсутність конкретних деталей помилки валідації; використання 422 для проблем автентифікації/авторизації; або непослідовність у тому, що викликає 422 проти 400.

Документація Mozilla.org для додаткової інформації


Що таке код стану 429?

HTTP: 429 Too Many Requests

Коли і чому сервери повертають його: Ви надсилаєте занадто багато запитів занадто швидко. Це як дзвонити комусь знову і знову — врешті-решт вони перестануть відповідати і скажуть вам притормозити.

Практичні випадки використання: Обмеження швидкості API (наприклад, 100 запитів на годину); запобігання зловживанням або DDoS-атакам; захист серверів від перевантаження; або застосування політик справедливого використання.

Як клієнти повинні реагувати на цей статус: Припиніть робити запити і почекайте. Перевірте заголовок Retry-After, щоб дізнатися, коли можна спробувати знову. Реалізуйте експоненціальне відступання — чекайте довше між кожною спробою повторення.

Неправильне використання або помилкові реалізації: Не включення заголовка Retry-After для керівництва клієнтам; встановлення занадто низьких лімітів для нормального використання; використання 429 для інших типів перевантаження (розгляньте 503); або нечітке документування лімітів швидкості.

Документація Mozilla.org для додаткової інформації


Що таке код стану 451?

HTTP: 451 Unavailable For Legal Reasons

Коли і чому сервери повертають його: Контент заблоковано через юридичні вимоги. Названий на честь твору Рея Бредбері «451 градус за Фаренгейтом» про цензуру, цей статус вказує на урядове або юридичне блокування.

Практичні випадки використання: Контент, заблокований за рішенням суду; повідомлення DMCA про видалення; географічні обмеження через місцеві закони; вимоги урядової цензури; або будь-яке юридично обов’язкове блокування контенту.

Як клієнти повинні реагувати на цей статус: Повідомте користувачів, що контент юридично обмежений. Відповідь може включати деталі про те, хто вимагав блокування (якщо це дозволено законом повідомляти).

Неправильне використання або помилкові реалізації: Використання 451 для неюридичних блокувань (використовуйте відповідний код 4xx); відсутність прозорості щодо юридичних блокувань, коли це можливо; або використання 451 для добровільних політик контенту, а не юридичних вимог.

Документація Mozilla.org для додаткової інформації


5xx Помилки сервера

Ці коди вказують, що сервер не зміг виконати дійсний запит.

Що таке код стану 500?

HTTP: 500 Internal Server Error

Коли і чому сервери повертають його: Щось пішло не так на стороні сервера, і він не знає, як це виправити. Це як касовий апарат, що зламався в магазині — проблема не у вашому способі оплати, просто їхня система вийшла з ладу.

Практичні випадки використання: Коли з’єднання з базою даних не вдається; коли є помилка в коді сервера; коли сервер вичерпав пам’ять; або будь-який неочікуваний збій, який програмісти не передбачили.

Як клієнти повинні реагувати на цей статус: Скажіть користувачам, що щось пішло не так, і запропонуйте спробувати пізніше. Ви можете автоматично повторити після затримки, оскільки ці помилки часто тимчасові.

Неправильне використання або помилкові реалізації: Використання 500 для помилок користувача (використовуйте коди 4xx для них); показ детальних повідомлень про помилки користувачам (ризик безпеки!); недостатнє логування деталей для виправлення проблеми; або використання 500 як лінивого універсального рішення для будь-якої помилки.

Документація Mozilla.org для додаткової інформації


Що таке код стану 501?

HTTP: 501 Not Implemented

Коли і чому сервери повертають його: Сервер не підтримує функціональність, яку ви просите. Це як просити базовий калькулятор побудувати графік — він розуміє, чого ви хочете, але не має такої функції.

Практичні випадки використання: Використання HTTP-методів, які сервер не розпізнає; запит функцій, які заплановані, але ще не побудовані; застарілі сервери, що не підтримують сучасну функціональність; або користувацькі методи, які не реалізовані.

Як клієнти повинні реагувати на цей статус: Не повторюйте цей запит — сервер не може його обробити. Використовуйте інший підхід або перевірте, чи є альтернативний спосіб досягти того, що вам потрібно.

Неправильне використання або помилкові реалізації: Використання 501 для тимчасово вимкнених функцій (використовуйте 503); використання 501 для методів, які ви розпізнаєте, але не дозволяєте (використовуйте 405); або використання 501 як виправдання для відсутніх функцій, які повинні бути реалізовані.

Документація Mozilla.org для додаткової інформації


Що таке код стану 502?

HTTP: 502 Bad Gateway

Коли і чому сервери повертають його: Сервер, що діє як шлюз або проксі, отримав недійсну відповідь від вищестоящого сервера. Це як попросити когось передати повідомлення, але вони повертаються і кажуть: «Людина, яку я запитав, дала мені нісенітницю».

Практичні випадки використання: Балансувальник навантаження не може досягти бекенд-серверів; API-шлюз отримує помилки від мікросервісів; зворотний проксі отримує неправильні відповіді; або CDN не може отримати дані від сервера-джерела.

Як клієнти повинні реагувати на цей статус: Це зазвичай тимчасово, тому повторіть після короткої затримки. Проблема між серверами, а не з вашим запитом, тому повторна спроба може спрацювати, коли вони виправлять свої проблеми комунікації.

Неправильне використання або помилкові реалізації: Використання 502 для власних помилок сервера-джерела (використовуйте 500); відсутність розрізнення між сценаріями «не можу досягти» і «недійсна відповідь»; або використання 502, коли сам шлюз має проблеми.

Документація Mozilla.org для додаткової інформації


Що таке код стану 503?

HTTP: 503 Service Unavailable

Коли і чому сервери повертають його: Сервер тимчасово не може обробляти запити. Це як магазин, що вивішує табличку «закрито на технічне обслуговування» — вони повернуться, але не зараз.

Практичні випадки використання: Заплановані вікна технічного обслуговування; ситуації перевантаження сервера; тимчасові перерви для оновлень; обмеження швидкості на рівні сервера; або будь-яка тимчасова нездатність обслуговувати запити.

Як клієнти повинні реагувати на цей статус: Зачекайте і спробуйте пізніше. Перевірте заголовок Retry-After для керівництва, коли повернутися. Реалізуйте експоненціальне відступання для повторних спроб, щоб не перевантажити сервер, коли він повернеться.

Неправильне використання або помилкові реалізації: Використання 503 для постійних проблем (використовуйте відповідну помилку); не включення Retry-After, коли ви знаєте, скільки це триватиме; використання 503 для проблем, специфічних для клієнта, а не загальносерверних проблем.

Документація Mozilla.org для додаткової інформації


Що таке код стану 504?

HTTP: 504 Gateway Timeout

Коли і чому сервери повертають його: Сервер, що діє як шлюз або проксі, не отримав вчасної відповіді від вищестоящого сервера. Це як попросити когось передати повідомлення, але вони повертаються і кажуть: «Я чекав і чекав, але вони так і не відповіли».

Практичні випадки використання: Запити до бази даних, що займають занадто багато часу; перевантажені бекенд-сервіси; мережеві проблеми між серверами; мікросервіси, що не відповідають достатньо швидко; або будь-який тайм-аут у комунікації сервер-сервер.

Як клієнти повинні реагувати на цей статус: Ви можете повторити, але майте на увазі, що операція може бути дорогою або повільною. Подумайте, чи достатньо критичний запит для повторної спроби, і реалізуйте розумні ліміти повторних спроб.

Неправильне використання або помилкові реалізації: Використання 504, коли клієнти повільні (використовуйте 408); встановлення занадто коротких тайм-аутів для розумних операцій; відсутність розрізнення між різними сценаріями тайм-ауту; або використання 504 для власних тайм-аутів сервера-джерела.

Документація Mozilla.org для додаткової інформації


Що таке код стану 505?

HTTP: 505 HTTP Version Not Supported

Коли і чому сервери повертають його: Сервер не підтримує версію HTTP, використану в запиті. Це як намагатися відтворити Blu-ray диск у DVD-плеєрі — плеєр розуміє, чого ви хочете, але не може обробити цей формат.

Практичні випадки використання: Старі сервери, що підтримують лише HTTP/1.0, отримують HTTP/2 запити; сервери, ще не оновлені для підтримки новіших версій HTTP; або користувацькі/експериментальні версії HTTP, які сервер не розпізнає.

Як клієнти повинні реагувати на цей статус: Повторіть запит, використовуючи іншу версію HTTP, зазвичай повертаючись до HTTP/1.1, яка підтримується універсально. Перевірте, які версії підтримує сервер.

Неправильне використання або помилкові реалізації: Використання 505 для непідтримуваних функцій у межах версії (використовуйте 501); відсутність спроби gracefully обробити узгодження версії; або відхилення стандартних версій HTTP, які повинні підтримуватися.

Документація Mozilla.org для додаткової інформації


Що таке код стану 507?

HTTP: 507 Insufficient Storage

Коли і чому сервери повертають його: Сервер не має достатньо місця для зберігання, щоб завершити запит. Це як намагатися зберегти файл, коли жорсткий диск заповнений.

Практичні випадки використання: Невдачі завантаження файлів через заповнений диск; операції з базою даних, що досягають квот зберігання; операції WebDAV, що перевищують виділений простір; або будь-яка операція, що вимагає більше сховища, ніж доступно.

Як клієнти повинні реагувати на цей статус: Повідомте користувачів про ліміти зберігання. Можливо, потрібно видалити старий контент, запросити більше сховища або зменшити розмір того, що ви намагаєтеся зберегти.

Неправильне використання або помилкові реалізації: Використання 507 для тимчасових проблем зі сховищем, які вирішаться самі (розгляньте 503); неналежний моніторинг сховища; використання 507 для проблем з квотами, не пов’язаних з фізичним сховищем; або відсутність інформації про ліміти сховища.

Документація Mozilla.org для додаткової інформації


Що таке код стану 508?

HTTP: 508 Loop Detected

Коли і чому сервери повертають його: Сервер виявив нескінченний цикл під час обробки запиту. Це як слідувати інструкціям, які в кінці кажуть «дивись крок 1» — ви б ходили по колу вічно.

Практичні випадки використання: Операції WebDAV з циклічними посиланнями; ланцюги перенаправлень, що замикаються на себе; символічні посилання, що створюють цикли; або будь-яка серверна операція, що виявляє нескінченне повторення.

Як клієнти повинні реагувати на цей статус: Не повторюйте той самий запит — він потрапить у той самий цикл. Перевірте циклічні посилання у вашій структурі даних і виправте їх перед повторною спробою.

Неправильне використання або помилкові реалізації: Використання 508 для помилок, не пов’язаних з циклами; відсутність належного виявлення циклів; використання 508 для клієнтських циклів перенаправлення (вони виглядають інакше); або виявлення хибних спрацьовувань як циклів.

Документація Mozilla.org для додаткової інформації


Що таке код стану 511?

HTTP: 511 Network Authentication Required

Коли і чому сервери повертають його: Вам потрібно автентифікуватися в самій мережі, перш ніж ви зможете отримати доступ до інтернету. Це як необхідність увійти в готельний WiFi, перш ніж ви зможете переглядати будь-які веб-сайти.

Практичні випадки використання: Сторінки входу в WiFi готелів або аеропортів; корпоративні портали доступу до мережі; публічний WiFi, що вимагає прийняття умов обслуговування; або будь-яка ситуація captive portal.

Як клієнти повинні реагувати на цей статус: Перенаправте користувачів на сторінку входу в мережу (зазвичай надається у відповіді). Після автентифікації в мережі вони можуть повторити свій оригінальний запит.

Неправильне використання або помилкові реалізації: Використання 511 для вимог входу на веб-сайт (використовуйте 401); використання 511 для автентифікації проксі (використовуйте 407); або реалізація captive порталів способами, що порушують безпечні з’єднання.

Документація Mozilla.org для додаткової інформації