Коди стану відповіді HTTP
Код стану відповіді HTTP показує, чи був успішно виконаний певний запит HTTP. Відповіді згруповані у 5 класів:
- Інформаційні відповіді ( 100 – 199 )
- Успішні відповіді ( 200 – 299 )
- Повідомлення про перенаправлення ( 300 – 399 )
- Помилки клієнта ( 400 – 499 )
- Помилки сервера ( 500 – 599 )
Коди стану визначені RFC 9110.
Примітка: Якщо ви отримали код відповіді, якого немає в даному списку, то він не стандартизований, найімовірніше він специфічний для конкретного сервера.
Інформаційні відповіді
Проміжна відповідь, він вказує, що клієнт повинен продовжити запит або ігнорувати відповідь, якщо запит вже завершено.
Цей код надсилається у відповідь на заголовок запиту Upgrade від клієнта та вказує протокол, на який перемикається сервер.
Сервер отримав і обробляє запит, але відповіді поки що немає.
Цей код в першу чергу призначений для використання з заголовком Link , дозволяючи користувача агенту почати попереднє завантаження ресурсів або здійснити попереднє з'єднання до джерела ресурсів, поки сервер готує відповідь.
Успішні відповіді
Запит успішно виконано. Значення результату успіху залежить від методу HTTP:
- GET : Ресурс був отриманий та переданий у тілі повідомлення.
- HEAD : Відповідь містить заголовки, але тіла повідомлення немає.
- PUT або POST : Ресурс, що описує результат дії, надісланий у тілі повідомлення.
- TRACE : Тіло повідомлення містить повідомлення запиту сервера.
Запит виконаний успішно, і в результаті було створено новий ресурс. Зазвичай це відповідь, яка надсилається на запити POST або PUT .
Запит отримано, але ще не опрацьовано.Це "ухильна" відповідь, оскільки в HTTP немає можливості пізніше відправити асинхронну відповідь з результатом обробки запиту. Цей код призначений для випадків, коли запит обробляється іншим процесом або сервером, а також пакетної обробки.
Повернені метадані не повністю збігаються з тими, що доступні на вихідному сервері, а отримані з іншого джерела. Найчастіше це використовується для дзеркал чи резервних копій ресурсів. За винятком таких випадків краще використовувати відповідь 200 OK.
Для цього запиту немає вмісту для надсилання, але заголовки відповіді можуть бути корисними. Агент користувача може використовувати їх для оновлення закешованих заголовків, отриманих раніше для цього ресурсу.
Повідомляє користувача агенту, що необхідно скинути відображення документа, який відправив цей запит.
Цей код відповіді використовується, коли від клієнта надсилається заголовок Range для запиту лише частини ресурсу.
Передає інформацію про кілька ресурсів у випадках, коли можуть бути доречні кілька кодів стану.
Використовується всередині елемента відповіді, щоб уникнути повторного перерахування «прив'язок» та дублювання даних.
Використовується для відповіді на запити GET у тих випадках, коли сервер хоче надіслати лише змінену частину ресурсу (тобто дельту).
Повідомлення про перенаправлення
Запит має більше однієї можливої відповіді. Агент користувача або користувач повинен вибрати один з них. Немає стандартизованого способу вибору однієї з відповідей, але рекомендується використовувати HTML-посилання на можливі варіанти, щоб у користувача була можливість вибору.
URL-адреса запитаного ресурсу була змінена назавжди. Нова URL-адреса вказана у відповіді.
URI запитаного ресурсу був тимчасово змінено.У майбутньому можуть бути внесені подальші зміни до URI. Отже, цей же URI має використовуватися клієнтом у майбутніх запитах.
Клієнту необхідно отримати запит за допомогою іншого URI за допомогою запиту GET .
Цей код використовується для цілей кешування. Він повідомляє клієнту, що відповідь не змінено, тому клієнт може продовжувати використовувати кешовану версію відповіді.
Запитана відповідь має бути доступна через проксі. Цей код визначено в попередній версії специфікації HTTP і зараз застарів через проблеми безпеки, пов'язані з внутрішнім налаштуванням проксі-сервера.
Цей код відповіді зарезервовано. Використовувався у попередній версії специфікації HTTP/1.1.
Клієнту необхідно отримати запрошений ресурс за іншим URI тим самим методом, який використовувався у попередньому запиті. Він має ту ж семантику, що і код відповіді 302 Found , за винятком того, що користувальницький агент не повинен змінювати метод: якщо в першому запиті використовувався POST , то POST повинен використовуватися і в другому запиті.
Ресурс тепер знаходиться за іншим URI, вказаним у заголовку відповіді Location . Він має ту саму семантику, що і код відповіді 301 Moved Permanently , за винятком того, що користувач агент не повинен змінювати метод, що використовується: якщо в першому запиті використовувався POST , то POST повинен використовуватися і в другому запиті.
Помилки клієнта
Сервер не може або не оброблятиме запит через щось, що сприймається як помилка клієнта (наприклад, неправильний синтаксис, формат або маршрутизація запиту).
Хоча стандарт HTTP визначає цю відповідь як «неавторизовану», семантично вона означає «неавтентифіковану». Це означає, що клієнт повинен автентифікувати себе, щоб отримати відповідь.
Цей код відповіді зарезервований для використання у майбутньому. Початковою метою створення цього коду було використання його для цифрових платіжних систем, однак він використовується дуже рідко, і стандартної угоди не існує.
Клієнт не має права доступу до контенту, тобто він неавторизований, тому сервер відмовляється надати запитаний ресурс. На відміну від 401 Unauthorized, особистість клієнта відома серверу.
Сервер не може знайти потрібний ресурс. У браузері це означає, що URL-адреса не розпізнана. В API це також може означати, що адреса правильна, але ресурс не існує. Сервер також може надіслати цей код відповіді замість 403 Forbidden, щоб приховати існування ресурсу від неавторизованого клієнта. Це найвідоміший код відповіді через його часту появу в мережі.
Метод запиту відомий серверу, але з підтримується цільовим ресурсом. Наприклад, API може не дозволяти виклик DELETE для видалення ресурсу.
Сервер після виконання узгодження контенту не знайшов вмісту, що відповідає критеріям, заданим користувальницьким агентом.
Цей код відповіді схожий на 401 Unauthorized , але автентифікація повинна виконуватись через проксі-сервер.
Сервер може надіслати цей код відповіді при невикористанні з'єднання навіть без попереднього запиту з боку клієнта. Він означає, що сервер хотів би закрити це з'єднання. Ця відповідь використовується порівняно часто, оскільки деякі браузери (наприклад, Chrome, Firefox 27+ або IE9) для прискорення використовують механізми попереднього підключення HTTP. Деякі сервери просто закривають з'єднання, не надсилаючи це повідомлення.
Запит конфліктує із поточним станом сервера.
Запитаний вміст був видалений із сервера, і немає можливості переадресації. Очікується, що клієнти видалять свої кеші та посилання на цей ресурс. Специфікація HTTP передбачає, що цей код відповіді буде використовуватися для обмежених за часом або рекламних послуг. API не повинні вказувати ресурси, які були видалені за допомогою цього коду.
Запит відхилений, тому що сервер вимагає вказати поле заголовка Content-Length , але воно не визначене.
Клієнт вказав у заголовках запиту умови, яким сервер не відповідає.
Розмір об'єкта запиту перевищує обмеження, визначені сервером. Сервер може закрити з'єднання або повернути поле заголовка Retry-After.
Запитаний клієнтом URI занадто довгий, щоб сервер зміг його обробити.
Запит відхилений, тому що медіа формат даних, що запитуються, не підтримується сервером.
Сервер не може коректно обробити запит з урахуванням діапазону, вказаного в полі заголовка Range .
Сервер не може виконати очікування, вказане у полі заголовка запиту Expect .
"Жартівлива" відповідь: сервер відхиляє спробу заварити каву в чайнику.
Сервер не може відповісти. Можливо, сервер не налаштований для комбінації схеми та повноважень, зазначених у URI запиту.
Запит сформований правильно, але його неможливо виконати через семантичні помилки.
Запитуваний ресурс заблокований.
Запит не виконано через проблеми у попередньому запиті.
Клієнт надіслав порцію даних занадто рано, перш ніж сервер встановив безпечне з'єднання.
Сервер відмовляється виконувати запит із використанням поточного протоколу, але може бути готовий зробити це після зміни протоколу на вказану в заголовку відповідь Upgrade .
Сервер вимагає, щоб запит містив умови. Ця відповідь призначена для запобігання проблемі одночасної зміни ресурсу кількома користувачами.
Користувач надіслав надто багато запитів у певний проміжок часу.
Сервер не оброблятиме запит, тому що поля заголовка занадто великі. Запит може бути надіслано повторно після зменшення розміру полів заголовка.
Користувальницький агент запросив ресурс, який не може бути наданий згідно із законом, наприклад веб-сторінку, піддану цензурі з боку уряду.
Помилки сервера
На сервері сталася помилка, внаслідок якої він не може успішно опрацювати запит.
Метод запиту не підтримується сервером і тому його не можна обробити. Методи GET і HEAD повинні завжди підтримуватись сервером і для них не повинен повертатися цей код.
Така відповідь може надіслати сервер, який виступає як шлюз, якщо в процесі обробки запиту він отримав неприпустиму відповідь від цільового сервера.
Сервер не готовий опрацювати запит на даний момент. Найпоширенішими причинами є технічне обслуговування або перевантаження сервера. Разом з такою відповіддю слід надсилати зручну для користувача сторінку з поясненням проблеми, а також заголовок HTTP Retry-After з розрахунковим часом вирішення проблеми. Крім того, корисно надсилати заголовки з інформацією про кешування, оскільки ці тимчасові відповіді зазвичай не слід кешувати.
Така відповідь може надіслати сервер, який виступає як шлюз, якщо в процесі обробки запиту він не може вчасно отримати відповідь цільового сервера.
Версія HTTP, що використовується у запиті, не підтримується сервером.
На сервері відбулася внутрішня помилка конфігурації: обраний у процесі узгодження варіант ресурсу не підходить.
Запит не виконано, тому що серверу не вдалося зберегти дані.
Запит не виконано, тому що на сервері було виявлено нескінченний цикл обробки даних.
Для виконання запиту необхідно розширити його.
Клієнту необхідно пройти автентифікацію для отримання доступу до мережі.
Сумісність із браузерами
BCD tables only load in the browser
Дивіться також
Коди стану HTTP
Код стану HTTP - Частина першого рядка відповіді сервера, який інформує клієнта про результат запиту. Складається він із трьох цифр, перша з яких вказує на клас стану. За цифрами іде фраза, яка пояснює причину відповіді.
Нижче наведено таблицю кодів стану HTPP.
1xx: Інформація
| Статус коду |
Повідомлення |
Опис |
| 100 |
Continue |
Продовжуй Сервер задоволений початковою інформацією про запит, і клієнт може продовжувати. |
| 101 |
Switching Protocols |
Перемикання протоколів Клієнт, який надіслав запит, пропонує перейти на більш відповідний для зазначеного ресурсу протокол. |
| 103 |
Checkpoint |
Контрольна точка Використовується у запитах із можливістю продовження для відновлення після переривання запитів POST або PUT. |
2xx: Успіх
| Статус коду |
Повідомлення |
Опис |
| 200 |
OK |
OK — успішний запит HTTP запит успішно оброблено. |
| 201 |
Created |
Створено В результаті успішного виконання запиту було створено новий ресурс |
| 202 |
Accepted |
Прийнято Запит було прийнято в обробку, але обробка ще не завершена. |
| 203 |
Non-Authoritative Information |
Чи не авторитетна інформація Запит був успішно оброблений (аналогічно відповіді 200), але в цьому випадку інформація, що передається, була взята не з первинного джерела (наприклад, з резервної копії або іншого сервера) і може бути неактуальною. |
| 204 |
No Content |
Немає контенту Запит був успішно опрацьований, але не повернув будь-який контент. |
| 205 |
Reset Content |
Скидання контенту Запит було опрацьовано, але не повернув контент. У цьому потрібно скидання введених даних клієнтом. |
| 206 |
Partial Content |
Частина контенту Сервер успішно обробив лише частину запиту. |
3xx: Перенаправлення
| Статус коду |
Повідомлення |
Опис |
| 300 |
Multiple Choices |
Вибір кількох варіантів Сервер передає з повідомленням список із кількох можливих варіантів перенаправлення альтернатив (максимум 5 варіантів). Клієнт може вибрати один із них. |
| 301 |
Moved Permanently |
Остаточно переміщено Сторінку остаточно переміщено на іншу URL-адресу. |
| 302 |
Found |
Знайдено /тимчасово переміщено Запитувана сторінка була знайдена / тимчасово перенесена на іншу URL |
| 303 |
See Other |
Дивіться інше Запрошувану сторінку не знайдено по іншому URL |
| 304 |
Not Modified |
Без змін Запитуваний документ не змінено з моменту останнього запиту |
| 306 |
Switch Proxy |
Код відповіді, що використовувався раніше, зараз зарезервований |
| 307 |
Temporary Redirect |
Тимчасовий редирект Запитуваний ресурс на короткий час доступний по іншому URL. |
| 308 |
Resume Incomplete |
Переміщено назавжди / відновлення після переривання Запитувана сторінка була перенесена на новий URL на постійній основі (редирект 308 зберігає HTTP метод, на відміну від 301-го, де можлива його зміна), або пропонується відновити перерваний PUT або POST запит |
4xx: Помилки клієнта
| Статус коду |
Повідомлення |
Опис |
| 400 |
Bad Request |
Некоректний запит Запит може бути оброблений, оскільки містить синтаксичну помилку. |
| 401 |
Unauthorized |
Не авторизовано Запит обробляється, але доступ до запитуваного ресурсу не надається, оскільки клієнт не авторизований |
| 402 |
Payment Required |
Не використовується Зарезервований для використання у майбутньому. |
| 403 |
Forbidden |
Заборонено Сервер зрозумів запит, але він не виконує його через обмеження прав доступу до вказаного ресурсу |
| 404 |
Not Found |
Не знайдено Запрошувану сторінку не знайдено. Сервер зрозумів запит, але не знайшов відповідного ресурсу за вказаною URL (Найпоширеніша помилка в Інтернеті виникає через неправильно вказану URL). |
| 405 |
Method Not Allowed |
Метод не підтримується Запит було зроблено методом, який підтримується даним ресурсом. |
| 406 |
Not Acceptable |
Не приймається Сервер може згенерувати тільки таку відповідь, яку клієнт не приймає. (наприклад, іншою мовою). |
| 407 |
Proxy Authentication Required |
Потрібна аутентифікація проксі Відповідь аналогічна коду 401 за винятком того, що аутентифікація проводиться для проксі-сервера |
| 408 |
Request Timeout |
Час очікування минув Запит клієнта до сервера зайняв надто багато часу. |
| 409 |
Conflict |
Конфлікт Запит не може бути оброблений через конфлікт із іншим запитом або конфігурацією сервера |
| 410 |
Gone |
Недоступний Доступний за вказаною URL-адресою раніше був доступний, але був видалений або недоступний. |
| 411 |
Length Required |
Потрібна довжина Довжина контенту не визначена і сервер не приймає запит без цього. Повторний запит має містити заголовок "Content-Length". |
| 412 |
Precondition Failed |
Не виконана попередня умова Попередня умова, зазначена у запиті, не була виконана. |
| 413 |
Request Entity Too Large |
Занадто великий запит Розмір запиту перевищує максимальний розмір запиту сервера. |
| 414 |
Request-URI Too Long |
Занадто довгий URI Серверу не вдається обробити запит через довгий URI. Така помилка може виникнути, коли клієнт намагається передати довгі параметри через метод GET, а чи не POST. |
| 415 |
Unsupported Media Type |
Непідтримуваний формат Формат не підтримується і сервер не може прийняти запит. |
| 416 |
Requested Range Not Satisfiable |
Неприпустимий діапазон Діапазон байтів, запрошений клієнтом, знаходиться за межами ресурсу |
| 417 |
Expectation Failed |
Очікування не справдилися Сервер не може задовольнити вимоги заголовка Expect, тому що поле заголовка не відповідає очікуванням. |
5xx: Помилки сервера
| Статус коду |
Повідомлення |
Опис |
| 500 |
Internal Server Error |
Внутрішня помилка сервера Будь-яка внутрішня помилка сервера, яку сервер не може конкретизувати. |
| 501 |
Not Implemented |
Не реалізовано Сервер не розпізнає вказаний у запиті метод і не може обробити запит. |
| 502 |
Bad Gateway |
Помилка шлюзу Сервер, виступаючи в ролі шлюзу або проксі-сервера, отримав недійсне повідомлення у відповідь від вищого сервера |
| 503 |
Service Unavailable |
Сервіс недоступний Сервер недоступний на даний момент (перевантажений, вимкнений, на технічному обслуговуванні). |
| 504 |
Gateway Timeout |
Час очікування відповіді шлюзом минув Сервер, виступаючи в ролі шлюзу або проксі-сервера, не отримав відповіді від сервера, що стоїть вище, у відведений час. |
| 505 |
HTTP Version Not Supported |
Версія HTTP не підтримується Версія протоколу HTTP, яка використовується у запиті, не підтримується сервером |
| 511 |
Network Authentication Required |
Потрібна автентифікація Для отримання доступу до мережі клієнт повинен пройти автентифікацію.Помилка генерується сервером-посередником, наприклад, сервером інтернет-провайдера, якщо необхідно ввести пароль для отримання доступу до мережі через платну точку доступу. |
Посібник з HTTP. Коди статусів
Код статусу є відповіддю сервера, який складається з трьох цифр. Перша визначає клас відповіді, а дві інші вказують на конкретну відповідь.
Існує п'ять основних категорій кодів статусу. Усі вони наведені нижче:
Коди статусів розширюються і HTTP програма не повинна розуміти значення всіх кодів.
Нижче наведені найпоширеніші код статусів за категоріями.
1ХХ: Інформаційні
| Повідомлення |
Опис |
| 100 Continue |
Тільки частина запиту була отримана сервером, але на даний момент запит не було відхилено. Клієнт має продовжувати запит. |
| 101 Switching Protocols |
Сервер вибирає протокол. |
2ХХ: Успішне виконання
| Повідомлення |
Опис |
| 200 OK |
Запит успішний |
| 201 Created |
Запит виконано, новий ресурс створено. |
| 202 Accepted |
Запит прийнято, але обробка не завершена. |
| 203 Non-authoritative Information |
Інформація в заголовку отримана з локальної копії або сторонньої копії, а не від оригінального сервера. |
| 204 No Content |
Код статусу та заголовок передано у відповіді, але дані відсутні. |
| 205 Reset Content |
Браузер повинен очистити форму цієї транзакції для додаткового введення. |
| 206 Partial Content |
Сервер повертає частину даних. Використовується для відповіді на запит із заголовком Content-Range. |
3ХХ: Перенаправлення
| Повідомлення |
Опис |
| 300 Multiple Choices |
Список посилань. Користувач може вибрати посилання та перейти до локації. Максимальна кількість посилань – 5. |
| 301 Moved Permanently |
Запрошувану сторінку було перенесено на нову URL-адресу. |
| 302 Found |
Запитувана сторінка була тимчасово перенесена на нову URL-адресу. |
| 303 See Other |
Запитувана сторінка може бути знайдена за іншою URL-адресою. |
| 304 Відмінно |
Код відповіді для заголовка If-Modifier-Since або If-None-Match, де URL не була змінена з останньої дати оновлення. |
| 305 Use Proxy |
Доступ до запитуваної сторінки повинен бути запитаний через проксі, який вказаний у заголовку Location. |
| 306 Unused |
Цей код використовувався в попередній версії, але зараз він не використовується, а сам код був зарезервований. |
| 307 Temporary Redirect |
Запитувана сторінка була тимчасово перенесена на нову URL-адресу. |
4ХХ: Помилка на стороні клієнта
| Повідомлення |
Опис |
| 400 Bad Request |
Сервер не зрозумів запиту. |
| 401 Unauthorized |
Запрошувана сторінка вимагає ім'я користувача та пароль. |
| 402 Payment Required |
На даний момент клієнт не може використовувати цей код. |
| 403 Forbidden |
Доступ до запитуваної сторінки заборонено. |
| 404 Not Found |
Сервер не може знайти запитувану сторінку. |
| 405 Method Not Allowed |
Метод, вказаний у запиті, є неприпустимим. |
| 406 Not Acceptable |
Сервер генерує відповідь, яка не може бути прийнята клієнтом. |
| 407 Proxy Authentication Required |
Клієнт повинен авторизуватися за допомогою проксі-сервера, перш ніж запит зможе бути оброблений. |
| 408 Request Timeout |
Запит тривав довше, ніж сервер готовий чекати. |
| 409 Conflict |
Запит не може бути завершено через конфлікт. |
| 410 Gone |
Запитувана сторінка більше недоступна. |
| 411 Length Required |
Елемент "Content-Length" не визначено. Сервер не може прийняти запит без цього елемента. |
| 412 Precondition Failed |
Сервер визнав передумови запиту хибними. |
| 413 Request Entity Too Large |
Сервер не прийме цей запит, оскільки тіло запиту занадто велике. |
| 414 Request-url Too Long |
Сервер не прийме цей запит, оскільки URL занадто велика (довга). |
| 415 Unsupported Media Type |
Північ не прийме цей запит, оскільки цей тип медіа файлу не підтримується. |
| 416 Requested Range Not Satisfiable |
Запитуваний діапазон байтів недоступний і знаходиться за межами діапазону. |
| 417 Expectation Failed |
Очікування, надіслані в заголовку запиту, не можуть бути задоволені цим сервером. |
5ХХ: Помилка на стороні сервера
| Повідомлення |
Опис |
| 500 Internal Server Error |
Запит не виконано. Сервер потрапив у непередбачені умови. |
| 501 Not Implemented |
Запит не виконано. Сервер не підтримує функціонал, що запитується. |
| 502 Bad Gateway |
Запит не виконано. Сервер отримав недоступний запит від сервера. |
| 503 Service Unavailable |
Запит не виконано. На даний момент сервер перевантажується або не працює. |
| 504 Gateway Timeout |
З'єднання закрито за часом. |
| 505 HTTP Version Not Supported |
Сервер не підтримує цю версію протоколу HTTP. |
На цьому ми закінчуємо вивчення коду статусу протоколу HTTP.
У статті ми розглянемо поля заголовка (header fields).