Список кодів стану HTTP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Код стану HTTP (англ. HTTP status code) — частина першого рядка відповіді сервера при запитах по протоколу HTTP. Він являє собою ціле число з трьох арабських цифр. Перша цифра вказує на клас стану. За кодом відповіді зазвичай йде відділена пробілом пояснювальна фраза на англійській мові, яка пояснює людині причину саме такої відповіді. Приклади:

  • 201 Webpage Created.
  • 401 Access allowed only for registered users.
  • 507 Insufficient Storage.

По коду відповіді клієнт дізнається про результати його запиту і визначає, що йому робити далі. Набір кодів стану є стандартом і вони описані у відповідних документах RFC. Введення нових кодів повинно відбуватись тільки після узгодження з IETF. Тим не менш, відомо про два використовуваних кода, не згаданих у RFC: 449 Retry With. Також згадується пояснювальна фраза «Reply With» в специфікації по WebDAV в Microsoft Developer Network, введений Microsoft і 509 Bandwidth Limit Exceeded, введений в cPanel.

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

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

Нижченаведений список кодів стану HTTP містить коди відповідно інтернет стандартів IETF, а також і інші IETF RFCs, інші специфікації і деякі інші широковживані коди. Перша цифра статус коду вказує на один з п’яти типів відповідей. HTTP клієнт як мінімум має розпізнавати ці п’ять типів відповідей. офіційний реєстр HTTP статус кодів. підтримує Internet Assigned Numbers Authority (IANA) Microsoft IIS іноді використовує додаткові десяткові субкоди, які містять додаткову інформацію. [1].

1xx Інформаційні[ред.ред. код]

Запит отримано, процес продовжується.

Цей клас кодів стану вказує попередню відповідь, що складається лише з статусного рядку і опціональних хедерів, і закінчується пустим рядком. Оскільки стандарт HTTP/1.0 не описує ніяких кодів 1xx, сервер не обов’язково має висилати відповідь формату 1xx клієнту HTTP/1.0.

100 Continue – Продовжити
Означає, що сервер отримав заголовок запиту, і клієнт повинен надіслати тіло запиту (для тих типів запитів, для яких необхідно відсилати тіло запиту, наприклад, POST запит). Якщо тіло запиту має великий розмір, відправляти його на сервер, коли запит вже був відхилений на основі невідповідності заголовків, не потрібно. Для того щоб здійснити перевірки, чи може запит бути прийнятим на основі запиту, який містить лише заголовок, клієнт повинен відправити Expect:100-continue в параметрах заголовку, і перш ніж продовжити перевірити чи містить відповідь 100 Continue (або відповідь 417 Expectation Failed, не продовжувати посилку).
101 Switching Protocols – Перемикання протоколів
Говорить про те, що запитуюча сторона попросила сервер здійснити процедуру перемикання протоколів і сервер вислав підтвердження, що він готовий виконати її.
102 Processing – Йде обробка (WebDAV; RFC 2518)
Оскільки запит WebDAV може містити багато під-запитів, пов'язаних з операціями над файлами, і це може зайняти багато часу на виконання запиту. Цей код вказує, що сервер отримав і обробляє запит, але ще не може дати відповіді. Це дозволяє клієнту не очікувати тайм-ауту і запобігає помилковому припущенню що відповідь на запит була втрачена.
105 Name Not Resolved – Вказане DNS ім’я не знайдено
При розпізнаванні доменного імені виникла помилка у зв'язку з невірною або відсутньою ip адресою DNS-сервера.

2xx Успішні операції[ред.ред. код]

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

200 OK
Стандартна відповідь про успішне виконання HTTP запиту. Фактична відповідь буде залежати від методу запиту. Для запитів GET, відповідь буде містити зміст об’єкту чи сторінки у відповідності до запитаного ресурсу. Для запитів POST відповідь буде містити опис об’єкту чи результат операції.
201 Created – Створено
Запит був виконаний і в результаті нього був створений новий ресурс.
202 Accepted – Прийнято
Запит був прийнятий для обробки, але обробка не була завершена. Запит в кінцевому підсумку може бути не виконаний, оскільки він може бути відхилений при фактичній обробці.
203 Non-Authoritative Information (since HTTP/1.1) – Інформація не авторитетна
Сервер успішно обробив запит, але інформація що міститься у відповіді, може бути з іншого джерела.
204 No Content – Немає вмісту
Сервер успішно обробив запит, але не повертає вміст. Зазвичай використовується у відповідь на успішний запит видалення.
205 Reset Content – Повтор відправки вмісту.
Сервер успішно обробив запит, але не повертає ніякого вмісту. На відміну від статусу 204, цей запит вимагає повторної відправки вмісту документу.
206 Partial Content – Частковий вміст
Сервер відсилає лише частину ресурсу у відповідності з зазначеними у заголовку клієнта обмеженнями розміру посилки. Такі заголовки з обмеженнями використовуються такими інструментами, як Wget, щоб здійснити відновлення перерваного завантаження, або розділити завантаження на кілька одночасних потоків.
207 Multi-Status (WebDAV) – Мульті-статус
Тіло повідомлення, представляє собою XML повідомлення і може містити ряд окремих кодів відповідей, в залежності від того, скільки було зроблено під-запитів;
208 Already Reported (WebDAV; RFC 5842)
Елементи DAV зв'язування вже пересилалися в попередній відповіді на даний запит, і не відсилаються знову.
226 IM Used (RFC 3229)
Сервер виконав запит GET для вказаного ресурсу, і в результаті віддає відповідь являє собою одну або декілька маніпуляцій, застосовуваних до поточного екземпляру даних.

3xx Перенаправлення[ред.ред. код]

Клієнт повинен вжити додаткових заходів для виконання запиту.

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

300 Multiple Choices – Множинний вибір
Вказує кілька варіантів посилань на ресурс, по яких клієнт може слідувати. Це, наприклад, може бути використаний для представлення різних варіантів формату для відео, списків файлів з ​​різними розширеннями, або слів з різними значеннями.
301 Moved Permanently – Ресурс переміщено назавжди
Цей і всі наступні запити повинні бути спрямовані по вказаному новому URI.
302 Found – Ресурс тимчасово переміщено
Зазвичай використовується для виконання перенаправлення на іншу сторінку і додатково містить в собі URL-посилання на HTTP локацію в полі HTTP заголовка.
303 See Other (з HTTP/1.1) – Дивіться інший ресурс
Відповідь на запит може бути отримана під іншим URI, з використанням процедури GET. Якщо даний код приходить на відповідь процедури POST (або PUT / DELETE), це слід розуміти як те, що сервер отримав дані, а перенаправлення повинне відбутися за допомогою окремого запиту GET.
304 Not Modified - Ресурс не змінювався
Вказує на те, що ресурс не був змінений з моменту останнього запиту. Як правило, клієнт HTTP надає заголовок, з вказаним параметром заголовку «If-Modified-Since» або «If-Match», аби передати час останього запиту, з яким можна порівнювати дату зміни ресурсу. Використання таких умов знижує навантаження на мережу, оскільки ресурс не потрібно повтороно передавати клієнту. Таким чином підвищується пропускна здатність сервера і клієнта.
305 Use Proxy (з HTTP/1.1) – Слід використати проксі
Заданий ресурс доступний тільки через проксі-сервер, адреса якого міститься у відповіді. Багато веб-браузерів (таких як Mozilla і Internet Explorer) завідомо невірно обробляють відповіді за цим кодом стану, в першу чергу з міркувань безпеки.
306 Switch Proxy
Даний код більше не використовується. Раніше означав, що наступні запити повинні використовувати вказаний в відповіді проксі-сервер.
307 Temporary Redirect (з HTTP/1.1) – Тимчасове перенаправлення
Запит необхідно повторити з іншим URI; Однак наступні запити повинні як і раніше використовувати попередню адресу. В порівнянні з тим як історично була реалізована ситуація з кодом 302, тип запиту не дозволено змінювати при перенаправлені початкового запиту. Наприклад, запит POST повторюються виконанням іншого запиту POST.
308 Permanent Redirect (Experimental RFC; RFC 7238) – Постійне перенаправлення
Сервер просить зробити повторний запит, і всі наступні виконувати з використанням іншого URI. 307 і 308 були запропоновані як додаткові коди в додаток до кодів 302 і 301, але з іншою поведінкою, яка не дозволяє змінювати метод запиту HTTP при перенаплавленні. Так, наприклад, при переправленні даних форми за допомогою методу POST на інший ресурс, відбувається автоматично без помилок.

4xx Клієнтська помилка[ред.ред. код]

Помилка 404 на польській Вікіпедії

Клас статус кодів 4xx призначений для випадків, в яких клієнт робить невірні запити. За винятком відповіді на запит HEAD, сервер повинен включити у відповідь пояснення щодо помилкової ситуації, і чи є ця помилка тимчасовою або постійним. Ці коди стану застосовуються до будь-якого методу запиту. Клієнтський браузер повинен повідомляти про ці помилки користувачу.

400 Bad Request – Неправильний запит
Запит не може бути виконаний із-за невірного синтаксису.
401 Unauthorized – Несанкціонований доступ
Схожа на 403 Forbidden, але використовується спеціально у разі необхідності аудентифікації користувача, яка відбулася не вдало, або ще не відбулася перед запитом ресурсу.
402 Payment Required – Необхідна оплата
Зарезервовано для майбутнього використання. Спочатку передбачалося, що цей код може бути використаний як частина схеми безготівкової оплати через мережу, але цього не сталося, і цей код зазвичай не використовується. YouTube використовує цей статус, якщо з конкретної IP-адреси зробили надмірну кількість запитів, і вимагає людини ввести CAPTCHA.
403 Forbidden – Заборонено
Запит був коректним, але сервер відмовляється відповідати на нього. На відміну від 401 Unauthorized, чи відбулася аудентифікація не має ніякого значення.
404 Not Found – Ресурс не знайдено
Ресурс не знайдено, але можуть бути доступний в майбутньому.
405 Method Not Allowed – Неприпустимий метод
Метод, з яким виконувався запит, не дозволено використовувати для заданого ресурсу; наприклад, запит був здійснений за методом GET на формі, хоча очікується що дані форми будуть надіслані методом POST, або PUT у випадку, коли цей ресурс тільки для читання.
406 Not Acceptable – Неприйнятний запит
Клієнт (тобто веб-браузер) може при запиті повідомити веб-серверу параметри щодо обмежень для даних, які клієнт може прийняти назад від сервера: MIME тип, розмір, мова сторінки, кодування чи ін.. Якщо веб-сервер виявляє, що дані, які він хоче відіслати, не є прийнятним для клієнта, він повертає заголовок, що містить зазначений код помилки.
407 Proxy Authentication Required – Необхідна ідентифікація проксі, файрвола
Ця помилка трапляється при спробі отримати доступ до веб-сайту через проксі-сервер, який який вимагає клієнт пройти процедуру ідентифікації.
408 Request Timeout – Час запиту закінчився
На сервері минув час очікування запиту. Клієнт не надіслав запит протягом часу, коли сервер його очікував. Клієнт може повторити запит без модифікацій пізніше в будь-який інший час.
409 Conflict – Конфлікт
Вказує, що запит не може бути опрацьований через конфлікт у запиті, наприклад, конфлікт одночасного редагування.
410 Gone – Зник
Код вказує, що ресурс який запитують, більше не існує, і не буде доступний в майбутньому. Цей код має використовуватися, коли ресурс був навмисно видалений, або повинен бути видалений. Після отримання коду 410 клієнт не повинен запитувати цей ресурс знову, а пошукові системи повинні видалити цей ресурс зі своїх індексів. Клієнтські програми і пошукові системи не вимагають обов'язкового використання коду 410, тому замість нього може бути використаний код 404.
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
418 I'm a teapot
Цей код з’явився в 1998 році і є одним з традиційних першоквітневих жартів IETF. В стандарті RFC 2324 введений протокол, який називається, "Hyper Text Coffee Pot Control Protocol". Передбачається, що сервер не знає такого протоколу, який за стандартом повинен бути реалізований на серверах HTTP.
419 Authentication Timeout (не в RFC 2616)
Це не стандартний тип помилки. Вказує, що сеанс з раніше дійсними даними ідентифікації на цьому сервері закінчився.
420 Method Failure (Spring Framework)
422 Unprocessable Entity
423 Locked (WebDAV; RFC 4918)
424 Failed Dependency (WebDAV; RFC 4918)
426 Upgrade Required
428 Precondition Required (RFC 6585)
Код вказує на те, що сервер вимагає, щоб запит містив додаткові умови. Зазвичай використовується для того, щоб уникнути затирання даних при редагуванні, коли один клієнт отримує ресурс, змінює його і знову відсилає для збереження на сервер, коли тим часом третя сторона встигає змінити цей ресурс, чим призводить до конфлікту. Таким чином сервер вимагає включити у заголовок умову, таку як If-Modified-Since і таким чином виконати умовний запит з перевіркою часу останнього редагування даних.
429 Too Many Requests (RFC 6585)
Користувач відправив занадто багато запитів в конкретний проміжок часу («обмеження швидкості»). Відповідь сервера повинна містити деталі, що пояснюють стан, і може включати в себе поле заголовку Retry-After, яке вказує, як довго необхідно клієнту чекати, перш ніж сервер буде готовий прийняти новий запит.
431 Request Header Fields Too Large (RFC 6585)
Сервер відмовляється обробити запит, тому що розмір полів заголовка занадто великий. Код може використовуватись у випадках коли всі поля в цілому мають завеликий розмір, або одне конкретне поле заголовку. В останньому випадку, у відповіді сервер повинен вказати, які саме поля заголовка перевищили доспустимий розмір.
440 Login Timeout (Microsoft)
Код застосовується Microsoft. Означає, що таймаут активності сесії користувача закінчився.
444 No Response (Nginx)
Використовується в Nginx. Вказує, що сервер не повернув ніякої інформації клієнту і закрив з'єднання.
449 Retry With (Microsoft)
Додатковий код від Microsoft. Запит повинен бути повторений після виконання певних дій. Часто пошукові машини або користувацькі додатки не надсилають у запиті необхідних параметрів, які є обов'язкові. Іноді у відповіді вказується список необхідних параметрів.
450 Blocked by Windows Parental Controls (Microsoft)
Додатковий код від Microsoft. Ця помилка коли, коли на комп'ютері включена система батьківського контролю (Windows Parental Controls), яка блокує доступ до даної веб-сторінки.
451 Unavailable For Legal Reasons (Internet draft)
451 Redirect (Microsoft)
494 Request Header Too Large (Nginx)
495 Cert Error (Nginx)
496 No Cert (Nginx)
497 HTTP to HTTPS (Nginx)
498 Token expired/invalid (Esri)
499 Client Closed Request (Nginx)

5xx Серверна помилка[ред.ред. код]

Серверу не вдалося виконати запит.

статус коди, що починаються з цифри "5" відносяться до випадків, в яких сервер ідентифікує, що сталася помилка або він по якійсь причині не в змозі виконати запит. Сервер повинен вислати інформацію, що містить пояснення помилкової ситуації, і вказати, чи є це тимчасовим або постійним, за винятком коли він отримував запивт в типу HEAD. Зі свого боку, клієнтський браузер повинен повідомляти про будь-яку помилку користувача. Ці коди стану мають місце до будь-якого методу запиту.

500 Internal Server Error – Внутрішня помилка сервера
Загальне повідомлення про помилку, яке може відбуватися в різних ситуаціях, коли для помилки не існує конкретного пояснення.
501 Not Implemented – Метод не підтримується
Сервер або не розпізнає метод запиту, або в нього немає можливості його виконати.
502 Bad Gateway – Помилка шлюзу
Сервер, працюючи в якості шлюзу або проксі-сервера, отримав відповідь про помилку чи відсутність зв'язку при спробі доступитися до наступного сервера в ланцюжку запитів.
504 Gateway Timeout – Шлюз не відповідає
Сервер, працюючи в якості шлюзу або проксі-сервера, не дочекався відповіді від вищеcтоящого серверу для завершення поточного запиту. З’явився в HTTP/1.1.
505 HTTP Version Not Supported – Версія НТТР не підтримується
Сервер не підтримує версію протоколу HTTP, використану у запиті.
507 Insufficient Storage (WebDAV; RFC 4918) – Недостатньо місця
Сервер не може обробити запит через недостачу місця на диску.
509 Bandwidth Limit Exceeded (Apache) [2]
Ця помилка виникає при досягненні межі пропускної здатності встановленою системним адміністратором. Єдиний спосіб вирішити цю проблему, дочекатися, доки навантаження на сервер не зменшиться і повторити спробу надіслати запит.
510 Not Extended (RFC 2774)
Серверу потрібне подальше продовження запиту, щоб виконати його.
511 Network Authentication Required (RFC 6585)
Вказує, що клієнт повинен ідентифікувати себе у даній мережі, щоб отримати доступ до ресурсу. Відповідь сервера має містити посилання на ресурс, який дасть можливість користувачу надіслати свої облікові дані (наприклад, HTML форму).
520 Origin Error (Cloudflare)
Цей код не є стандартним, його використовує CloudFlare, щоб повідомити про невідому помилку яка могла статися при намаганні веб сервера звернутися до кешу CloudFlare.
521 Web server is down (Cloudflare)
Основний веб сервер не може встановити з’єднання з кешем CloudFlare.
522 Connection timed out (Cloudflare)
523 Proxy Declined Request (Cloudflare)
524 A timeout occurred (Cloudflare)
598 Network read timeout error (Unknown)
599 Network connect timeout error (Unknown)

Примітки[ред.ред. код]

  1. «The HTTP status codes in IIS 7.0». Microsoft. July 14, 2009. Процитовано April 1, 2009. 
  2. «HTTP Error Codes and Quick Fixes». http://docs.cpanel.net. cPanel. 

Посилання[ред.ред. код]

Джерела[ред.ред. код]