HTTP status codes (HTTP коди стану відповіді) – це тризначні коди, котрі повертає веб-сервер у відповідь на запит від клієнта (наприклад браузера). Вони інформують клієнта про результат обробки запиту.
Перша цифра коду вказує на загальний клас стану відповіді, тоді як останні дві цифри надають більш конкретну інформацію.
Класи HTTP status code
1. Informational (1xx): вказують на те, що сервер отримав запит і обробляє його. Ці коди використовуються для забезпечення зворотнього зв’язку з клієнтом, під час довготривалих запитів.
2. Success (2xx): вказують на те, що запит був успішним і сервер зміг його обробити. Найпоширенішим кодом успіху є 200 OK, який означає, що запитуваний ресурс було успішно повернуто у відповіді.
3. Redirection (3xx): цей клас вказує на те, що сервер отримав запит, але запитуваний ресурс було переміщено в інше місце, тому клієнт буде перенаправлений. Наприклад, якщо запитуваний ресурс переміщено, сервер може відповісти кодом статусу 301 Moved Permanently і перенаправити клієнта на нову URL-адресу.
4. Client errors (4xx): вказують про помилку на стороні клієнта (невірний запит, відсутні облікові дані для автентифікації, тощо). Наприклад код клієнтської помилки – 404 Not Found, який означає що запитуваний ресурс не знайдено на сервері.
5. Server errors (5xx): вказують на те, що сталася помилка на стороні сервера (не вдалося виконати запит, помилка з’єднання з базою даних, тощо). Наприклад код помилки сервера – 500 Internal Server Error, повідомляє що на сервері виникла непередбачувана ситуація і він не зміг виконати запит.
Приклади поширених HTTP status code
200 OK
Запит був успішним і сервер повернув запитуваний ресурс у відповіді. Іншими словами, цей код повідомляє що сервер зміг обробити запит, і надати клієнту запитувану інформацію.
201 Created
Вказує що новий ресурс був успішно створений на сервері, у відповідь на запит (наприклад POST, PUT). Коли клієнт надсилає на сервер POST або PUT запит з даними для створення ресурсу, сервер обробляє запит, і в разі успіху повертає код стану 201.
204 No Content
Сервер успішно обробив запит, але не має контенту для повернення клієнту. Наприклад, клієнт може надіслати серверу запит DELETE, для видалення ресурсу, на що сервер відповість кодом стану 204, щоб вказати, що ресурс успішно видалено, а контент для повернення відсутній.
301 Moved Permanently
Вказує на те, що сторінку було остаточно переміщено в нове місце. Зазвичай це відбувається коли веб-сайт змінює доменні імена або структуру URL-адрес. Після отримання коду статусу 301 Moved Permanently, клієнти повинні оновити свої збережені посилання на новий URI. Новий URI вказується в HTTP-заголовку Location і може використовуватись клієнтом для автоматичного перенаправлення.
304 Not Modified
Використовується щоб вказати, що запитуваний ресурс не було змінено з моменту останнього звернення до нього, і клієнт повинен використовувати кешовану версію ресурсу. Це може допомогти підвищити продуктивність і зменшити мережевий трафік.
400 Bad Request
Означає що сервер не зміг обробити запит клієнта через неправильно сформований або недійсний запит. Зазвичай повертається, коли сервер не може зрозуміти або обробити запит через відсутність або недійсність параметрів, неправильне форматування або інші подібні проблеми.
Коли сервер повертає код стану 400, тіло відповіді зазвичай містить додаткову інформацію про помилку, наприклад опис проблеми і пропозиції щодо її виправлення. Ця інформація може допомогти клієнту зрозуміти, що пішло не так із запитом і як це виправити.
401 Unauthorized
Це код відповіді про помилку автентифікації. Іншими словами, коли користувач намагається отримати доступ до захищеного ресурсу (веб-сторінка, файл, тощо), сервер вимагає від користувача надати дійсні облікові дані, такі як ім’я користувача та пароль. Якщо користувач не надає дійсні облікові дані, сервер поверне код стану 401, який вказує що запит не було авторизовано.
403 Forbidden
Вказує що сервер зрозумів запит клієнта, але відмовляється його виконати. Це може статися з різних причин, наприклад коли клієнт не має достатніх дозволів для доступу до запитуваного ресурсу, або запитуваний ресурс є обмеженим чи забороненим.
Важливо зазначити, що код статусу 403 відрізняється від коду статусу 401, який використовується для позначення того, що клієнт повинен пройти автентифікацію або надати облікові дані, перш ніж отримати доступ до запитуваного ресурсу. На відміну від нього, код стану 403 вказує на те, що клієнт автентифікований, але не має достатніх дозволів для доступу до запитуваного ресурсу.
404 Not Found
Серверу не вдалося знайти запитуваний ресурс або документ. Це може статися з різних причин, наприклад, якщо URL-адреса ресурсу невірна або ресурс було видалено з сервера.
500 Internal Server Error
Внутрішня помилка сервера – це універсальне повідомлення про помилку сервера, яке є загальним за своєю природою і зазвичай використовується, якщо більш специфічне повідомлення недоступне. Загалом це означає, що у веб-сервера виникли проблеми та HTTP-запит не може бути виконаний.
501 Not Implemented
Повідомляє про помилку сервера пов’язану з тим, що він не підтримує певну функцію, необхідну для завершення HTTP-запиту (тобто клієнт запросив функціонал який не підтримується, але може бути реалізовано в найближчому майбутньому). У цій ситуації сервер може додатково надати HTTP-заголовок Retry-After, пропонуючи клієнту час для повторної спроби.
502 Bad Gateway
Означає що сервер, котрий діє як шлюз або проксі-сервер, отримав невірну відповідь від попереднього сервера, під час спроби виконати запит клієнта.
Іншими словами, користувач надсилає запит на сервер, котрий діє як проксі-сервер або шлюз, перенаправляючи запит для обробки на інший сервер. Якщо висхідний сервер не відповідає або відповідь є невірною чи пошкодженою, проксі-сервер повертає код стану HTTP 502, який вказує що він не зміг виконати запит.
503 Service Unavailable
Повідомляє про помилку сервера, та повертається коли HTTP-запит не може бути виконаний через недоступність ресурсу (перенавантаження через раптовий сплеск трафіку, ресурс заблокований, сервер перезавантажується). Зазвичай це проблеми які носять тимчасовий характер.
504 Gateway Timeout
Повідомляє про помилку сервера, у випадках коли він діє як проксі-сервер або шлюз для висхідного сервера. Після отримання HTTP-запиту від клієнта, було зроблено спробу переслати запит на висхідний сервер, але HTTP-відповідь від нього не отримано.
Висновок
Коди статусу HTTP відповіді забезпечують стандартизований спосіб для спілкування серверів з клієнтами, щодо результатів запитів. Це допомагає клієнтам зрозуміти стан відповіді, і вжити відповідних заходів за необхідності.