Тест: что ты знаешь про статусные коды HTTP?
2026-02-21 15:35 Diff

#Тесты

  • 12 май 2023
  • 0

Можно ли заварить кофе на HTTP, почему Twitter иногда просит успокоиться при обращении к API и при чём тут Рэй Брэдбери?

Иллюстрация: Оля Ежак для Skillbox Media

Автор. Пишет про социальные сети, маркетинг и код. Увлекается иллюстрацией, визуальным повествованием, видеоиграми и кино.

Статусные коды — это не только инструмент диагностики веб-страниц, но и куча забавных пасхалок. Пройдите тест, чтобы выяснить, насколько хорошо вы в них разбираетесь.

Начнём с базы: из чего состоит HTTP-ответ?

Из статуса ответа, заголовков и тела ответа.

Верно! В статусе ответа

указывается

код. Например, код 200 означает, что всё прошло успешно. В заголовках размещается дополнительная информация, которая помогает браузеру корректно отобразить файл, — допустим, версия HTTP. А в тело ответа сервер кладёт сам запрашиваемый файл — например, HTML-страницу.

Из метода, URI, версии HTTP и адреса хоста.

Не-а, вы спутали с HTTP-запросом. В HTTP-ответ входит три части: статус ответа, заголовки и тело ответа.

В статусе ответа

указывается

код. Например, код 200 означает, что всё прошло успешно. В заголовках размещается дополнительная информация, которая помогает браузеру корректно отобразить файл, — допустим, версия HTTP. А в тело ответа сервер кладёт сам запрашиваемый файл — например, HTML-страницу.

Только из статуса ответа.

И только? Нет, В HTTP-ответ входит три части: статус ответа, заголовки и тело ответа.

В статусе ответа

указывается

код. Например, код 200 означает, что всё прошло успешно. В заголовках размещается дополнительная информация, которая помогает браузеру корректно отобразить файл, — допустим, версия HTTP. А в тело ответа сервер кладёт сам запрашиваемый файл — например, HTML-страницу.

Знать все статусные коды не обязательно, но, думаем, вы в курсе, сколько классов (групп, типов) таких кодов существует. Итак, сколько?

Три.

Где-то недосчитались ещё двух классов.

Правильный ответ — пять классов:

  • информационный (1хх);
  • успешный (2хх);
  • перенаправление (3хх);
  • ошибка клиента (4хх);
  • ошибка сервера (5хх).

На класс указывает первая цифра кода (то есть сотни), а остальные две цифры описывают специфику кода.

Кроме того, в коде состояния есть ещё объяснение на английском языке, которое позволяет понять, что именно случилось.

Например 102 Processing указывает на первый класс ответа (информационный) и состояние — «идёт обработка».

Четыре.

Где-то недосчитались ещё одного класса.

Правильный ответ — пять классов:

  • информационный (1хх);
  • успешный (2хх);
  • перенаправление (3хх);
  • ошибка клиента (4хх);
  • ошибка сервера (5хх).

На класс указывает первая цифра кода (то есть сотни), а остальные две цифры описывают специфику кода.

Кроме того, в коде состояния есть ещё объяснение на английском языке, которое позволяет понять, что именно случилось.

Например 102 Processing указывает на первый класс ответа (информационный) и состояние — «идёт обработка».

Пять.

Правильно! Вот они:

  • информационный (1хх);
  • успешный (2хх);
  • перенаправление (3хх);
  • ошибка клиента (4хх);
  • ошибка сервера (5хх).

На класс указывает первая цифра кода (то есть сотни), а остальные две цифры описывают специфику кода.

Кроме того, в коде состояния есть ещё объяснение на английском языке, которое позволяет понять, что именно случилось.

Например 102 Processing указывает на первый класс ответа (информационный) и состояние — «идёт обработка».

Код статуса работает как обратная связь — он помогает узнать результат запроса и понять, какие действия нужно предпринять дальше. Но может ли сайт, сервис или платформа изобрести и использовать собственный, не входящий в общепринятую классификацию, код?

Может.

Действительно, может. Конечно, большинство стандартных кодов, таких как 404 или 502,

регулируется

документом RFC (Request for Comments), а введение новых кодов в этот документ согласовывается с Инженерным советом интернета (IETF). Но это касается интернета в целом. В частных случаях ничего не мешает создать свой код ответа HTTP.

Например, в Shopify

вместо

кода 429 Too Many Requests, который означает, что от клиента было получено слишком много запросов, может использоваться 430 Request Header Fields Too Large — но лишь в случаях, когда запрашивается слишком много URL-адресов.

Нет, можно использовать только стандартные.

А почему нет? Конечно, большинство стандартных кодов, таких как 404 или 502,

регулируется

документом RFC (Request for Comments), а введение новых кодов в этот документ согласовывается с Инженерным советом интернета (IETF). Но это касается интернета в целом. В частных случаях ничего не мешает создать свой код ответа HTTP.

Например, в Shopify

вместо

кода 429 Too Many Requests, который означает, что от клиента было получено слишком много запросов, может использоваться 430 Request Header Fields Too Large — но лишь в случаях, когда запрашивается слишком много URL-адресов.

В первой версии API для поиска трендов в Twitter была прописана ошибка 420 Enhance Your Calm, которая указывала на то, что скорость приёма данных от клиента ограничена. Она не входила в список основных кодов RFC, поэтому в следующей версии API Twitter её заменили на стандартную, принятую RFC. На какую?

429 Too Many Requests.

Верно! Описание ошибки вместо туманного «успокойтесь» стало прямо говорить о том, что пользователь отправил слишком много запросов за заданный промежуток времени.

По распространённой

теории

, описание ошибки 420 — это фраза из фильма «Разрушитель» с Сильвестром Сталлоне. Кстати, 420 Enhance Your Calm до сих пор

используется

в кодах ошибок API «Яндекс Маркета».

422 Unprocessable Entity.

Не-а, правильный ответ — 429 Too Many Requests. Описание ошибки вместо туманного «успокойтесь» стало прямо говорить о том, что пользователь отправил слишком много запросов за заданный промежуток времени.

По распространённой

теории

, описание ошибки 420 — это фраза из фильма «Разрушитель» с Сильвестром Сталлоне. Кстати, 420 Enhance Your Calm до сих пор

используется

в кодах ошибок API «Яндекс Маркета».

408 Request Timeout.

Не-а, правильный ответ — 429 Too Many Requests. Описание ошибки вместо туманного «успокойтесь» стало прямо говорить о том, что пользователь отправил слишком много запросов за заданный промежуток времени.

По распространённой

теории

, описание ошибки 420 — это фраза из фильма «Разрушитель» с Сильвестром Сталлоне. Кстати, 420 Enhance Your Calm до сих пор

используется

в кодах ошибок API «Яндекс Маркета».

В IETF тоже любят придумывать первоапрельские шутки и разыгрывать весь интернет. Так, в 1998 году в организации создали «протокол для управления гипертекстовым кофейником» (HTCPCP), по которому с помощью команд можно было заставить сервер варить напиток, добавлять в него молоко и «извлекать» его с сервера. Естественно, были и свои коды ошибок: одна из них стандартная — 406 Not Acceptable, а другая возникала в случае, когда сервер не мог приготовить кофе. Что это была за ошибка?

418 Coffee not found.

Не-а, правильный ответ — 418 I’m a teapot.

Шуточное описание

ошибки

418 сообщает, что сервер не может приготовить кофе, потому что он чайник. Фраза в названии является отсылкой к навязчивой песне

I’m a Little Teapot

1939 года.

Код ошибки стал мемом, и другие разработчики начали использовать его как пасхалку. В 2017 году председатель IETF призвал удалить намёки на 418 из Node.js, Go, Python, но общественность выступила резко против. Было запущено движение Save 418, которое транслировало простую мысль: шутки в коде показывают, что его всё ещё пишут люди.

Общественный резонанс был настолько сильным, что в итоге создатели языков не стали удалять упоминание этого кода ошибки, а сам IETF зарезервировал код 418 в RFC.

Зайти на чайник можно по этой

ссылке

.

418 Coffee is gone.

Не-а, правильный ответ — 418 I'm a teapot.

Шуточное описание

ошибки

418 сообщает, что сервер не может приготовить кофе, потому что он чайник. Фраза в названии является отсылкой к навязчивой песне

I’m a Little Teapot

1939 года.

Код ошибки стал мемом, и другие разработчики начали использовать его как пасхалку. В 2017 году председатель IETF призвал удалить намёки на 418 из Node.js, Go, Python, но общественность выступила резко против. Было запущено движение Save 418, которое транслировало простую мысль: шутки в коде показывают, что его всё ещё пишут люди.

Общественный резонанс был настолько сильным, что в итоге создатели языков не стали удалять упоминание этого кода ошибки, а сам IETF зарезервировал код 418 в RFC.

Зайти на чайник можно по этой

ссылке

.

418 I’m a teapot.

Верно! Шуточная

ошибка

«Я — чайник» сообщает, что сервер не может приготовить кофе, потому что он — чайник. Фраза в названии ошибки является отсылкой к навязчивой песне

I’m a Little Teapot

1939 года.

Код ошибки стал мемом, и другие разработчики начали использовать его как пасхалку. В 2017 году председатель IETF призвал удалить намёки на 418 из Node.js, Go, Python, но общественность выступила резко против. Было запущено движение Save 418, которое транслировало простую мысль: шутки в коде показывают, что его всё ещё пишут люди.

Общественный резонанс был настолько сильным, что в итоге создатели языков не стали удалять упоминание этого кода ошибки, а сам IETF зарезервировал код 418 в RFC.

Зайти на чайник можно по этой

ссылке

.

Одна из ошибок имеет код 451 и является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту». Что она означает?

Ресурс недоступен по юридическим причинам.

Верно! Полное название

ошибки

— 451 Unavailable For Legal Reasons. Она была добавлена в стандарт в 2015 году и означает, что доступ к ресурсу закрыт по юридическим причинам — по требованию органов власти и правообладателей. Отсылка к роману Брэдбери почти прямая: в мире антиутопии были запрещены книги, а тут речь о запрете сайта. По сути, код 451 — это уточнение кода 403.

Сервер перегрет.

Думаем, в этом случае ответа от сервера вообще не будет ?

Полное название название

ошибки

 — 451 Unavailable For Legal Reasons. Она была добавлена в стандарт в 2015 году и означает, что доступ к ресурсу закрыт по юридическим причинам — по требованию органов власти и правообладателей. Отсылка к роману Брэдбери почти прямая: в мире антиутопии были запрещены книги, а тут речь о запрете сайта. По сути, код 451 — это уточнение кода 403.

Библиотека на сервере переполнена.

Не-а. Полное название название

ошибки

— 451 Unavailable For Legal Reasons. Она была добавлена в стандарт в 2015 году и означает, что доступ к ресурсу закрыт по юридическим причинам — по требованию органов власти и правообладателей. Отсылка к роману Брэдбери почти прямая: в мире антиутопии были запрещены книги, а тут речь о запрете сайта. По сути, код 451 — это уточнение кода 403.

Какая ошибка наиболее часто встречается на страницах в интернете? Подсказка: страницу с этим кодом часто стараются обыграть как-нибудь креативно.

508

Не-а, ошибка 508 Loop Detected встречается нечасто — она показывает, что операция отменена, потому что сервер обнаружил бесконечный цикл.

Правильный ответ — ошибка 404 Not Found. Она встречается

наиболее часто

, потому что возникает из-за неправильно введённого веб-адреса или

битой ссылки

. Веб-мастера часто особым образом оформляют эту страницу и как минимум добавляют на неё ссылку на основной сайт, чтобы пользователь не покинул ресурс.

449

Не-а, 449 Retry With ошибка редкая — используется в основном Microsoft в расширении WebDAV.

Правильный ответ — ошибка 404 Not Found. Она встречается

наиболее часто

, потому что возникает из-за неправильно введённого веб-адреса или

битой ссылки

. Веб-мастера часто особым образом оформляют эту страницу и как минимум добавляют на неё ссылку на основной сайт, чтобы пользователь не покинул ресурс.

404

Верно! Ошибка 404 Not Found встречается

наиболее часто

, потому что возникает из-за неправильно введённого веб-адреса или

битой ссылки

. Веб-мастера часто особым образом оформляют эту страницу и как минимум добавляют на неё ссылку на основной сайт, чтобы пользователь не покидал ресурс.

Коды ответов, которые начинаются с цифры 5, определяются как ошибки на стороне сервера. Во всей этой системе кодов есть один код, который используется в случае, когда проблема не установлена, — эта ошибка считается самой неприятной, потому что причина «поломки» неясна. Что это за код?

500 Internal Server Error.

Верно! Код 500 присваивается любой внутренней ошибке, которую система не смогла нормально классифицировать. Фактически эта ошибка говорит: какая-то беда с сервером, но в чём именно проблема — вообще непонятно.

520 Unknown Error.

Не-а. Это нестандартный код, который используется в Cloudflare, — он означает, что сервер CDN не смог обработать ошибку веб-сервера.

Правильный ответ — 500 Internal Server Error. Этот код присваивается любой внутренней ошибке, которую система не смогла нормально классифицировать. Фактически эта ошибка говорит: какая-то беда с сервером, но в чём именно проблема — вообще непонятно.

510 Not Extended.

Не-а. Этот код конкретизирован: он означает, что на сервере отсутствует расширение, которое желает использовать клиент.

Код 500 Internal Server Error присваивается любой внутренней ошибке, которую система не смогла нормально классифицировать. Фактически эта ошибка говорит: какая-то беда с сервером, но в чём именно проблема — вообще непонятно.

В RFC-документе есть один код ошибки, который зарезервирован на будущее, но так и не стал стандартом. В итоге его используют в самых разных значениях. Что это за код?

401 Unauthorized.

Не-а, этот код указывает на ошибку авторизации и является стандартным.

Правильный ответ — 402 Payment Required. Ошибка 402

зарезервирована

на будущее и не является стандартом, поэтому её используют в разных контекстах. Изначально она задумывалась как указание на отсутствие оплаты: клиенту необходимо оплатить доступ, чтобы выполнить запрос.

408 Request Timeout.

Не-а, это ошибка стандартная и конкретная — она сообщает, что время ожидания сервера истекло.

Правильный ответ — 402 Payment Required. Ошибка 402

зарезервирована

на будущее и не является стандартом, поэтому её используют в разных контекстах. Изначально она задумывалась как указание на отсутствие оплаты: клиенту необходимо оплатить доступ, чтобы выполнить запрос.

402 Payment Required.

Верно! Ошибка 402

зарезервирована

на будущее и не является стандартом, поэтому её используют в самых разных контекстах. Изначально она задумывалась как указание на отсутствие оплаты: клиенту необходимо оплатить доступ, чтобы выполнить запрос.

В каком сериале нумерацию классов HTTP-ответов использовали в названиях серий?

«Мистер Робот».

Верно! В названиях десяти серий четвёртого сезона

использованы

коды ошибок. Например, первая серия называется 401 Unauthorized, вторая — 402 Payment Required и так далее.

«Кремниевая долина».

Не-а, правильный ответ — «Мистер Робот». В названиях десяти серий четвёртого сезона

использованы

коды ошибок. Например, первая серия называется 401 Unauthorized, вторая — 402 Payment Required и так далее.

«Чёрное зеркало».

Не-а, правильный ответ — «Мистер Робот». В названиях десяти серий четвёртого сезона

использованы

коды ошибок. Например, первая серия называется 401 Unauthorized, вторая — 402 Payment Required и так далее.

Обновить страницу — ваш любимый метод устранения любой ошибки в интернете. В 90% случаев он сработает (если вы не администратор сервера, конечно). Рекомендуем присмотреться к нашему курсу «Профессия Инженер по тестированию» — вы научитесь находить ошибки и создавать условия для их устранения.

Эксперт по статусным ответам. Чтобы понять, почему сайт не открылся, вам не придётся гуглить — большинство ответов уже находится у вас в голове. Рекомендуем присмотреться к нашему курсу «Профессия Инженер по тестированию» — вы научитесь находить ошибки и создавать условия для их устранения.

Исследователь статусных ответов. Вы не только знаете практически все коды, но ещё и неплохо разбираетесь в их контексте. Рекомендуем присмотреться к нашему курсу «Профессия Инженер по тестированию» — вы научитесь находить ошибки и создавать условия для их устранения.

Легенда! Вы настолько свободно читаете HTTP-коды, что можете делать это с закрытыми глазами (прямо как в «Матрице»). Видимо, вы администрируете серверы, любите читать об IT или просто возглавляете комитет по разработке соответствующего RFC. Рекомендуем присмотреться к нашему курсу «Профессия Инженер по тестированию» — вы научитесь находить ошибки и создавать условия для их устранения.