Список кодів стану HTTP
Код стану HTTP (англ. HTTP status code) — частина першого рядка відповіді сервера при запитах за протоколом HTTP. Він є цілим число з трьох арабських цифр. Перша цифра вказує на клас стану. За кодом відповіді зазвичай йде відділена пробілом пояснювальна фраза англійською мовою, яка пояснює людині причину саме такої відповіді. Приклади:
- 201 Webpage Created.
- 401 Access allowed only for registered users.
- 507 Insufficient Storage.
HTTP |
---|
|
Методи |
Список заголовків |
Коди стану |
По коду відповіді клієнт дізнається про результати його запиту і визначає, що йому робити далі.
Набір кодів стану є стандартом і вони описані у відповідних документах 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 іноді використовує додаткові десяткові субкоди, які містять додаткову інформацію.[2].
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 Firefox і 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 Клієнтська помилка
Клас статус кодів 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 — Помилка шлюзу
- Сервер, працюючи як шлюз або проксі-сервер, отримав відповідь про помилку чи відсутність зв'язку при спробі доступитися до наступного сервера в ланцюжку запитів.
- 503 Service Unavailable — Сервіс недоступний
- Сервер тимчасово не має можливості обробляти запити за технічними причинами (обслуговування, перевантаження тощо).
- 504 Gateway Timeout — Шлюз не відповідає
- Сервер, працюючи як шлюз або проксі-сервер, не дочекався відповіді від вищеcтоящого серверу для завершення поточного запиту. З'явився в HTTP/1.1.
- 505 HTTP Version Not Supported — Версія НТТР не підтримується
- Сервер не підтримує версію протоколу HTTP, використану у запиті.
- 507 Insufficient Storage (WebDAV; RFC 4918) — Недостатньо місця
- Сервер не може обробити запит через недостачу місця на диску.
- 509 Bandwidth Limit Exceeded (Apache)[3]
- Ця помилка виникає при досягненні межі пропускної здатності встановленою системним адміністратором. Єдиний спосіб вирішити цю проблему, дочекатися, доки навантаження на сервер не зменшиться і повторити спробу надіслати запит.
- 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)
Пов'язані жаргонізми
В IT-спільноті «ok2xx» означає успішне виконання будь-якої задачі й готовність до нових, що склалося за аналогією з класом кодів успішних операцій 2хх.
На противагу виразові «ok2xx», що означає успіх, «err4xx» — скорочення, яким передають розчарування, або повне нерозуміння суті того що відбувається, за аналогією з класом кодів операцій 4хх.
Примітки
- SebWeo.
- The HTTP status codes in IIS 7.0. Microsoft. 14 липня 2009. Процитовано April 1, 2009.
- HTTP Error Codes and Quick Fixes. http://docs.cpanel.net. cPanel. Архів оригіналу за 1 липня 2014. Процитовано 29 червня 2014.
Посилання
- Hypertext Transfer Protocol (HTTP) Status Code Registry (англ.) — список з посиланнями на RFC.