HTTP или HyperText Transfer Protocol – это протокол передачи гипертекста. Является протоколом прикладного уровня, используемым для передачи данных.
Изначально информация передавалась под видом гипертекстовых документов в формате HTML. По мере развития технологий HTTP стал работать с произвольными данными.
Данный протокол работает на основании запросов. Они представлены командами, посылаемыми клиентом в клиент-серверной модели. При помощи соответствующих «функций» пользователь сможет совершать различные операции и действия над веб-сайтами и интернет-приложениями.
Рассматриваемый протокол описан при помощи спецификации RFC2616. Наиболее распространенные его версии – это HTTP/1.1 и HTTP/2.
Далее предстоит познакомиться с HTTP-запросами более подробно. Необходимо рассмотреть не только их структуру и параметры, но и коды статуса. Все это позволит быстрее освоить азы работы с запросами в клиент-серверной модели. Предложенная в статье информация пригодится как новичкам, так и уже более опытным разработчикам и компьютерным администраторам.
Принцип работы запросов
Обмен информацией при помощи HTTP запросов осуществляется по определенному алгоритму. Он выглядит так:
- Сначала клиент (client) формирует запрос (request) и отправляет его на сервер.
- Сервер (server) получает «команду» и обрабатывает ее. В процессе обработки информации формируется тот или иной результат. Это – ответ сервера.
- Серверная часть перенаправляет на клиентскую «сторону» результат обработки запроса.
- Клиентская часть принимает ответ. Им выступает возвращенный результат «команды». Пример – переход на веб-страницу в браузере.
Выше данный алгоритм представлен в виде наглядной картинки. Это простейшая схема коммуникации нескольких устройств по HTTP-протоколам. По умолчанию подключение осуществляется при помощи порта 80. Вместо него можно установить другой порт – все зависит непосредственно от конфигурационных параметров веб-сервера.
Чтобы работать с кодами статуса HTTP-запроса, необходимо лучше изучить соответствующий компонент. Обмен информацией между клиентской частью и сервером осуществляется при помощи сообщений. Они бывают нескольких видов:
- Запросы или HTTP Requests. Это сообщения, которые будут отправляться с клиентской стороны на сервер для осуществления определенных операций. Чаще всего – для непосредственного получения доступа к тому или иному веб-проекту/сайте/приложению. В качестве основы здесь выступает HTTP-заголовок.
- Ответы или HTTP Responses. Это сообщения, отправляемые серверами в качестве ответов на изначально посланные клиентами «команды».
У запросов по упомянутому ранее протоколу имеется определенная структура. У каждого администратора и разработчика должно быть общее понимание состава «команды». Эта информация поможет лучше и быстрее обработать запрос и возникшие при работе с ним ошибки.
Структура
Структура команд в клиент-серверной модели имеет следующий состав:
- Стартовая строка – применяется для того, чтобы описать версию используемого протокола. Здесь публикуются иные данные. Пример – запрашиваемый ресурс или код состояния ответа. Содержимое занимает всего одну строчку.
- Заголовок – headers. Это несколько строк текста в заданном формате. Они уточняют запрос, посылаемый на сервер, или описывают содержимое тела сообщения.
- Пустая строка. Указывает на то, что метаданные, используемые для имеющейся «команды» или ответа сервера были отправлены в «нужную» сторону.
- Опциональное тело сообщения. Оно включает в себя информацию, связанную с посланным на сервер сообщением для обработки. Может содержать документы, передаваемые в качестве ответов.
Далее предстоит изучить соответствующие составляющие более подробно, чтобы лучше понимать, когда клиент может получить тот или иной код ошибки в качестве результата на сформированное сообщение.
Стартовая строка
Она включает в себя несколько компонентов:
- Метод запроса. Представлено коротким словом на английском. Оно указывает на то, что именно сервер должен сделать. Метод Get сообщает серверу, что пользователь запрашивает определенную информацию. При помощи метода Post можно разместить данные на сервере.
- Цель запроса. Это URL-указатель веб-страницы или интернет-приложения. Включает в свой состав: протокол, доменное имя, путь к конкретному проекту на сервере. Дополнительно включает в себя номер порта и иные параметры HTTP-команды.
- Версия используемого протокола. Отвечает за определение структуры информации, идущей после стартовой строки.
Выше – наглядный пример реализации стартовой строки. Она указывает на то, что в виде метода используется Get. Обращение осуществляется к сервису /index.html. Для обработки сервер будет использовать протокол версии HTTP/ 1.1
Методы
Методы необходимо знать, чтобы грамотно исправлять ошибки. Иногда сбои бывают вызваны неправильно составленной «командой».
Наиболее распространенными методами в рассматриваемом протоколе являются:
- Get. Используется для запросов ресурсов. Предусматривается передача дополнительных данных через строку «команды» в виде URL.
- Post. Активируется, когда сервер должен получить для размещения информацию, включая файлы.
- Head. Дает возможность получать только заголовки, которые могут быть возвращены, если бы server начал обрабатывать запрос типа GET.
- Put. Размещает/создает новые ресурсе на серверной стороне.
- Delete. Удаление существующих ресурсов в серверной части модели.
- Options. Позволяет получить информацию у серверной части, включая данные о допустимых для дальнейшей обработки методах.
- Patch. Используется для частичных ��зменений задействованного ресурса.
Другие команды тоже встречаются, но значительно реже.
URL-адреса
URL – это указатель или Uniform Resource Locator. Он представлен в виде строчки, которая дает возможность указать запрашиваемый ресурс и ряд некоторых параметров. Использование URL неразрывно связано с другими компонентами протокола, который включает в себя:
- Scheme. Это поле, которое используется для указания используемого протокола. Оно всегда сопровождается двоеточием и двумя //.
- Host – используется для уточнения местоположения веб-ресурса или приложения. Включает в себя IP-адрес. Может состоять из доменного имени.
- Port. С помощью соответствующего компонента пользователь способен указать порт подключения к серверу. Начинается с двоеточия, после которого задается необходимые значения. Если порт не указан, он выбирается автоматически.
- Path. Это блок, в котором указывается ресурс, к которому осуществляется непосредственное подключение. Если компонент отсутствует, сервер обычно возвращает указатель по умолчанию.
- Query String – начинается с «?», после которого записывается пара «параметр–значение». Между соответствующей записью ставится знак равенства. В данном поле могут передаваться несколько параметров. Для их разделения на письме используется символ «&».
Обязательными для доступа к ресурсу – это Host и Scheme. Остальные перечисленные параметры могут отсутствовать.
Версии HTTP
HTTP/1.1 – это один из наиболее стабильных протоколов подключения. Он имеет несколько проблем:
- передача заголовков в несжатой форме, а тела сообщения – в «форматированном» представлении;
- передача по интернету даже тех частей заголовков, которые совпадали;
- отсутствие мультиплексирования.
Перечисленные проблемы удалось устранить вместе с HTTP/2. Теперь информация разбивается на фреймы, встраиваемые непосредственно в поток информации.
Заголовки
HTTP-заголовок – это «длинный текст», сформированный в формате «Имя-Заголовок-Значение» с двоеточием в виде разделяющего символа. Название заголовка запроса не учитывает регистр. Согласно действующим негласным правилам, принято каждое отдельное слово в такой записи указывать с заглавной буквы.
Структурная форма у заголовков будет меняться – она напрямую зависит от конкретного заголовка. Исходная запись заголовка может быть велика, но она всегда занимает всего одну строчку.
Заголовки делятся на несколько видов:
- Общего назначения. Они относятся ко всему сообщению.
- Заголовки запроса. С их помощью удается уточнить информацию о запросах, сообщая дополнительный контекст или используя ограничения, представленные логическими условиями.
- Заголовки представления. Они описывают формат данных сообщения, а также используемый тип кодировки. Добавляются к запросу не всегда – необходимы только тогда, когда с заголовком передается некоторое тело.
Выше – примеры наиболее распространенных заголовков запроса.
Тело запроса
Заключительная часть посылаемой на сервер «команды». Может отсутствовать у некоторых запросов: het, options, delete, head. Некоторые такие «команды» умеют отправлять данные непосредственно на серверную сторону. Наиболее распространенным вариантом является post.
Ответы HTTP
HTTP-ответ – это сообщение, которое будет отправляться сервером клиенту на посланную для обработки «команду». Его структура окажется точно такой же, как и в случае с HTTP Request: стартовая строчка, заголовок и тело.
Тело ответа
Тело ответа – это заключительная его часть. Присутствует у большинства ответов, но не является обязательным компонентом. Некоторые коды ошибок и ответов не предусматривают тел, потому что все необходимые данные сообщаются в заголовке.
Заголовки ответа
Заголовки ответа применяются для уточнения ответа. Они никак не отражаются на содержимом тела. Поддерживаются в том же формате, что и остальные заголовки: «Имя–Значение» с разделителем-двоеточием.
Выше можно увидеть несколько наиболее распространенных в ответах заголовков.
Строка статуса ответа
Строка статуса или status line – это компонент, который включает в себя:
- версию протокола;
- код протокола, указывающий на факт успешной обработки «команды» на сервере;
- пояснение – небольшое текстовое описание к коду состояния, используемое для упрощения понимания и восприятия данных человеком.
Вот – пример того, как выглядит строка состояния вышестоящего сервера. Далее предстоит более подробно изучить состояния и их коды, а также расшифровку ошибок. Эта информация пригодится как новичкам, так и более опытным специалистам. С ее помощью даже рядовой пользователь сможет выяснить, почему сервер не может обработать посланную «команду».
Типы кодов
Коды состояния применяются для того, чтобы указать клиенту статус посланной «команды». Server может вернуть код, который относится к одной из пяти категорий:
КатегорияЧто значит1xxИнформативные сообщения. На обработку «команды» такие коды никак не влияют.2xxКоды, которые будут возвращаться при успешной обработке «команды».3xxКоды, используемые для перенаправления пользователя.4xxError. Коды, указывающие на то, что клиент сформировал некорректный запрос.5xxПоказываются, если произошла ошибка сервера.
Далее более подробно будут рассмотрены категории 4xx и 5xx. Они помогут понять, когда и почему необходимо повторить запрос, указанный в заголовке.
Клиентские ошибки
К клиентским ошибкам (типа 4xx) относят:
- 400 Bad Request. Ответ от браузера, который может быть получен, если сервер не смог правильно отреагировать на посланную «команду». В основном появляется тогда, когда не соблюдается синтаксис протокола передачи.
- 401 Unauthorized. Появляется, если клиент использует неправильные авторизационные данные (authentication required).
- 402 Payment Required. Указывается при необходимости оплаты доступа к серверной части.
- 403 Forbidden. Работает аналогично ошибке 401. Серверная часть не позволяет подключение, хотя сама «команда» сформирована правильно. К проекту просто нет доступа.
- 404 Not Found. Наиболее распространенный вид ошибки. Появляется, если «команда» ведет в никуда. Выводится при попытке попасть на несуществующую страничку.
- 405 Method Not Allowed. Указывает на то, что метод, используемый клиентом, не разрешен. Пример – это попытка ввода данных в форму через Get со стороны клиента, если соответствующая операция работает только с Post.
- 406 Not Acceptable. Сообщение, которое указывает на то, что веб-сайт передает контент, который не может быть распознан с клиентской стороны. Проблема заключается в методе сжатия, формате страницы и так далее. Иногда высвечивается при неправильной конфигурации кодировки. Встречается код крайне редко.
- 407 Proxy Authentication Required. Работает почти так же, как и 401. Разница заключается в том, что логин и пароль требуются для прокси, а не для основного подключения.
- 408 Request Timeout. Разрыв соединения с клиентской частью ввиду того, что подключение не используется. Сервер долгое время ждал ответа, но соединение не было налажено. Эта ошибка часто появляется после длительной и безуспешной попытки зайти на ту или иную веб-страничку.
- 409 Conflict. Несоответствие запроса с клиентской стороны ожиданиям сервера.
- 410 Gone. Аналог 404 ошибки, который указывает на перманентность отсутствия веб-страницы.
- 411 Length Required. Сервер не хочет принимать «команды» со стороны клиента, потому что отсутствует определение заголовка Content-Length.
- 412 Precondition Failed. Указывает на отклонение пользовательской «команды». Доступ к выбранному проекту не разрешен. В основном возникает ввиду неправильной настройки работы методов.
- 413 Payload Too Large. Посланная «команда» с клиентской стороны слишком длинная.
- 414 URL Too Long. Превышение лимита длины URL.
- 415 Unsupported Media Type. Загрузка данных на сервер в неподходящем формате.
- 429 Too Many Request. На сервер было послано слишком много запросов за небольшой промежуток времени.
- 450 Blocked Windows Parental Controls. Сообщение, которое будет часто преследовать детей. Оно указывает на родительский контроль от Microsoft. Высвечивается, если пользователь пытался посетить запрещенный родителем ресурс. Изменяется ситуация при помощи корректировки параметров упомянутой ранее службы.
- 431 Request Header Fields Too Large. В посылаемой «команде» применяются слишком длинные заголовки.
Перечисленные ошибки не являются исчерпывающими. Здесь можно увидеть еще несколько их примеров.
Серверные ошибки
Ошибки и неполадки могут возникать не из-за неправильных клиентских действий, а ввиду серверных сбоев. В основном такие сообщения появляются тогда, когда не удается обработать посланные «команды».
К числу серверных ошибок относят:
- 500 Internal Server Error. Это код, который появляется, если сервер сталкивается с непредвиденными обстоятельствами.
- 501 Not Implemented. Указывает на отсутствие реализации функциональности, необходимой для обработки «команды».
- 502 Bad Gateway. Встречается, если серверная сторона – это шлюз или прокси. Выскакивает, если обнаруживается несогласованность протоколов между вышестоящим сервером и его шлюзом.
- 503 Service Unavailable. Возникает, если не получается обработать запрос клиента по одной из двух технических причин. Первая – это слишком большое количество пользователей пытаются отправить запросы. У серверной части проекта не остается ресурсов для отправки ответа. Вторая – это проведение технических работ.
- 504 Gateway Timeout. Напоминает 408 ошибку. Здесь превышен тайм-аут при попытке сервера выйти на контакт с вышестоящим сервером.
- 505 HTTP Version Not Supported. В клиент-серверной модели используются разные протоколы подключения HTTP.
- 506 Variant Also Negotiates. Возникает при неправильной первоначальной настройке серверной стороны. Указывает на сбои базовых конфигураций.
- 507 Insufficient Storage. Указывает на нехватку со стороны серверной части пространства в хранилище для обработки клиентской «команды».
- 508 Loop Detected. Высвечивается при обнаружении бесконечного цикла в клиентском запросе. Может расцениваться как провал запроса и всей обрабатываемой операции.
- 509 Bandwidth Limit Exceeded. Указывает на то, что серверная сторона потребляет трафика больше, чем позволено.
- 510 Not Extended. Высвечивается, если клиент отправляет запрос на использование какого-либо расширения, отсутствующего на сервере. Исправляется путем избавления от декларирования неподдерживаемых расширений из конструкции. Можно добавить поддержку того или иного компонента на сервер.
- 511 Network Authentication Required. Указывает на то, что перед выходом в сеть необходимо авторизоваться.
Теперь понятно, какие HTTP-статусы встречаются в location заголовка. Лучше освоить протоколы подключения к Сети и вероятные ошибки, а также способы их исправления помогут специализированные компьютерные курсы.
P. S. Интересуют компьютерные сети, сетевые технологии, протоколы передачи данных? Обратите внимание на следующие курсы в Otus:
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>HTTP-запросы и статусы OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="HTTP или HyperText Transfer Protocol – это протокол передачи гипертекста. Является протоколом прикладного уровня, используемым для передачи данных. Изначально информация передавалась под видом гипертекстовых документов в формате HTML. По мере развития технологий HTTP стал работать с произвольными данными. Данный протокол работает на основании запросов. Они представлены командами, посылаемыми клиентом в клиент-серверной модели. При помощи соответствующих" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/http-zaprosi-i-statusi/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#article","name":"HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u044b OTUS","headline":"HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u044b","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/05\/oj-1080x72039-1.jpg","width":2245,"height":1587},"datePublished":"2023-05-14T15:13:29+00:00","dateModified":"2023-05-14T15:20:58+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, HTTP, \u0441\u0435\u0442\u0438"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#listItem","position":2,"name":"HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u044b","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#webpage","url":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/","name":"HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u044b OTUS","description":"HTTP \u0438\u043b\u0438 HyperText Transfer Protocol \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0433\u0438\u043f\u0435\u0440\u0442\u0435\u043a\u0441\u0442\u0430. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0434 \u0432\u0438\u0434\u043e\u043c \u0433\u0438\u043f\u0435\u0440\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 HTML. \u041f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 HTTP \u0441\u0442\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041e\u043d\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438, \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c\u044b\u043c\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0432 \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2023\/05\/oj-1080x72039-1.jpg","@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/http-zaprosi-i-statusi\/#mainImage"},"datePublished":"2023-05-14T15:13:29+00:00","dateModified":"2023-05-14T15:20:58+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/6326" /><link rel='shortlink' href='https://otus.ru/journal/?p=6326' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fhttp-zaprosi-i-statusi%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fhttp-zaprosi-i-statusi%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-6326 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-6326" class="the-post post-6326 post type-post status-publish format-standard has-post-thumbnail category-polza tag-http tag-seti">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
HTTP-запросы и статусы
</h1>
<a href="https://otus.ru/journal/http-zaprosi-i-statusi/" class="date-link" data-wpel-link="internal"><time class="post-date">14 мая, 2023</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72039-1.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="HTTP-запросы и статусы" title="HTTP-запросы и статусы" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72039-1-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72039-1-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72039-1-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2" title="Принцип работы запросов">Принцип работы запросов</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#HTTP-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D1%8B" title="HTTP-сообщение: виды">HTTP-сообщение: виды</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0" title="Структура">Структура</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%A1%D1%82%D0%B0%D1%80%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0" title="Стартовая строка">Стартовая строка</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B" title="Методы">Методы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-6" href="#URL-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0" title="URL-адреса">URL-адреса</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8_HTTP" title="Версии HTTP">Версии HTTP</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8" title="Заголовки">Заголовки</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%A2%D0%B5%D0%BB%D0%BE_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0" title="Тело запроса">Тело запроса</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B_HTTP" title="Ответы HTTP">Ответы HTTP</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%A2%D0%B5%D0%BB%D0%BE_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0" title="Тело ответа">Тело ответа</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0" title="Заголовки ответа">Заголовки ответа</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0" title="Строка статуса ответа">Строка статуса ответа</a></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%A2%D0%B8%D0%BF%D1%8B_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2" title="Типы кодов">Типы кодов</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8" title="Клиентские ошибки">Клиентские ошибки</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8" title="Серверные ошибки">Серверные ошибки</a></li></ul></li></ul></li></ul></nav></div>
<p>HTTP или HyperText Transfer Protocol – это протокол передачи гипертекста. Является протоколом прикладного уровня, используемым для передачи данных.</p>
<p>Изначально информация передавалась под видом гипертекстовых документов в формате HTML. По мере развития технологий HTTP стал работать с произвольными данными.</p>
<p>Данный протокол работает на основании запросов. Они представлены командами, посылаемыми клиентом в клиент-серверной модели. При помощи соответствующих «функций» пользователь сможет совершать различные операции и действия над веб-сайтами и интернет-приложениями.</p>
<p>Рассматриваемый протокол описан при помощи спецификации RFC2616. Наиболее распространенные его версии – это HTTP/1.1 и HTTP/2.</p>
<p>Далее предстоит познакомиться с HTTP-запросами более подробно. Необходимо рассмотреть не только их структуру и параметры, но и коды статуса. Все это позволит быстрее освоить азы работы с запросами в клиент-серверной модели. Предложенная в статье информация пригодится как новичкам, так и уже более опытным разработчикам и компьютерным администраторам.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2"></span>Принцип работы запросов<span class="ez-toc-section-end"></span></h2>
<p>Обмен информацией при помощи HTTP запросов осуществляется по определенному алгоритму. Он выглядит так:</p>
<ol>
<li>Сначала клиент (client) формирует запрос (request) и отправляет его на сервер.</li>
<li>Сервер (server) получает «команду» и обрабатывает ее. В процессе обработки информации формируется тот или иной результат. Это – ответ сервера.</li>
<li>Серверная часть перенаправляет на клиентскую «сторону» результат обработки запроса.</li>
<li>Клиентская часть принимает ответ. Им выступает возвращенный результат «команды». Пример – переход на веб-страницу в браузере.</li>
</ol>
<figure class="wp-block-image size-full"><img decoding="async" width="508" height="214" src="https://otus.ru/journal/wp-content/uploads/2023/05/image-65.png" alt="HTTP-запросы и статусы" class="wp-image-6328" srcset="https://otus.ru/journal/wp-content/uploads/2023/05/image-65.png 508w, https://otus.ru/journal/wp-content/uploads/2023/05/image-65-300x126.png 300w, https://otus.ru/journal/wp-content/uploads/2023/05/image-65-150x63.png 150w" sizes="(max-width: 508px) 100vw, 508px" /></figure>
<p>Выше данный алгоритм представлен в виде наглядной картинки. Это простейшая схема коммуникации нескольких устройств по HTTP-протоколам. По умолчанию подключение осуществляется при помощи порта 80. Вместо него можно установить другой порт – все зависит непосредственно от конфигурационных параметров веб-сервера.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="HTTP-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D1%8B"></span>HTTP-сообщение: виды<span class="ez-toc-section-end"></span></h2>
<p>Чтобы работать с кодами статуса HTTP-запроса, необходимо лучше изучить соответствующий компонент. Обмен информацией между клиентской частью и сервером осуществляется при помощи сообщений. Они бывают нескольких видов:</p>
<ol>
<li>Запросы или HTTP Requests. Это сообщения, которые будут отправляться с клиентской стороны на сервер для осуществления определенных операций. Чаще всего – для непосредственного получения доступа к тому или иному веб-проекту/сайте/приложению. В качестве основы здесь выступает HTTP-заголовок.</li>
<li>Ответы или HTTP Responses. Это сообщения, отправляемые серверами в качестве ответов на изначально посланные клиентами «команды».</li>
</ol>
<p>У запросов по упомянутому ранее протоколу имеется определенная структура. У каждого администратора и разработчика должно быть общее понимание состава «команды». Эта информация поможет лучше и быстрее обработать запрос и возникшие при работе с ним ошибки.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0"></span>Структура<span class="ez-toc-section-end"></span></h3>
<p>Структура команд в клиент-серверной модели имеет следующий состав:</p>
<ol>
<li>Стартовая строка – применяется для того, чтобы описать версию используемого протокола. Здесь публикуются иные данные. Пример – запрашиваемый ресурс или код состояния ответа. Содержимое занимает всего одну строчку.</li>
<li>Заголовок – headers. Это несколько строк текста в заданном формате. Они уточняют запрос, посылаемый на сервер, или описывают содержимое тела сообщения.</li>
<li>Пустая строка. Указывает на то, что метаданные, используемые для имеющейся «команды» или ответа сервера были отправлены в «нужную» сторону.</li>
<li>Опциональное тело сообщения. Оно включает в себя информацию, связанную с посланным на сервер сообщением для обработки. Может содержать документы, передаваемые в качестве ответов.</li>
</ol>
<p>Далее предстоит изучить соответствующие составляющие более подробно, чтобы лучше понимать, когда клиент может получить тот или иной код ошибки в качестве результата на сформированное сообщение.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%82%D0%B0%D1%80%D1%82%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0"></span><em>Стартовая строка</em><span class="ez-toc-section-end"></span></h4>
<p>Она включает в себя несколько компонентов:</p>
<ol>
<li>Метод запроса. Представлено коротким словом на английском. Оно указывает на то, что именно сервер должен сделать. Метод Get сообщает серверу, что пользователь запрашивает определенную информацию. При помощи метода Post можно разместить данные на сервере.</li>
<li>Цель запроса. Это URL-указатель веб-страницы или интернет-приложения. Включает в свой состав: протокол, доменное имя, путь к конкретному проекту на сервере. Дополнительно включает в себя номер порта и иные параметры HTTP-команды.</li>
<li>Версия используемого протокола. Отвечает за определение структуры информации, идущей после стартовой строки.</li>
</ol>
<figure class="wp-block-image size-full"><img decoding="async" width="590" height="167" src="https://otus.ru/journal/wp-content/uploads/2023/05/image-64.png" alt="HTTP-запросы и статусы" class="wp-image-6327" srcset="https://otus.ru/journal/wp-content/uploads/2023/05/image-64.png 590w, https://otus.ru/journal/wp-content/uploads/2023/05/image-64-300x85.png 300w, https://otus.ru/journal/wp-content/uploads/2023/05/image-64-150x42.png 150w" sizes="(max-width: 590px) 100vw, 590px" /></figure>
<p>Выше – наглядный пример реализации стартовой строки. Она указывает на то, что в виде метода используется Get. Обращение осуществляется к сервису /index.html. Для обработки сервер будет использовать протокол версии HTTP/ 1.1</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B"></span><em>Методы</em><span class="ez-toc-section-end"></span></h4>
<p>Методы необходимо знать, чтобы грамотно исправлять ошибки. Иногда сбои бывают вызваны неправильно составленной «командой».</p>
<p>Наиболее распространенными методами в рассматриваемом протоколе являются:</p>
<ol>
<li>Get. Используется для запросов ресурсов. Предусматривается передача дополнительных данных через строку «команды» в виде URL.</li>
<li>Post. Активируется, когда сервер должен получить для размещения информацию, включая файлы.</li>
<li>Head. Дает возможность получать только заголовки, которые могут быть возвращены, если бы server начал обрабатывать запрос типа GET.</li>
<li>Put. Размещает/создает новые ресурсе на серверной стороне.</li>
<li>Delete. Удаление существующих ресурсов в серверной части модели.</li>
<li>Options. Позволяет получить информацию у серверной части, включая данные о допустимых для дальнейшей обработки методах.</li>
<li>Patch. Используется для частичных изменений задействованного ресурса.</li>
</ol>
<p>Другие команды тоже встречаются, но значительно реже.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="URL-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0"></span><em>URL-адреса</em><span class="ez-toc-section-end"></span></h4>
<p>URL – это указатель или Uniform Resource Locator. Он представлен в виде строчки, которая дает возможность указать запрашиваемый ресурс и ряд некоторых параметров. Использование URL неразрывно связано с другими компонентами протокола, который включает в себя:</p>
<ol>
<li>Scheme. Это поле, которое используется для указания используемого протокола. Оно всегда сопровождается двоеточием и двумя //.</li>
<li>Host – используется для уточнения местоположения веб-ресурса или приложения. Включает в себя IP-адрес. Может состоять из доменного имени.</li>
<li>Port. С помощью соответствующего компонента пользователь способен указать порт подключения к серверу. Начинается с двоеточия, после которого задается необходимые значения. Если порт не указан, он выбирается автоматически.</li>
<li>Path. Это блок, в котором указывается ресурс, к которому осуществляется непосредственное подключение. Если компонент отсутствует, сервер обычно возвращает указатель по умолчанию.</li>
<li>Query String – начинается с «?», после которого записывается пара «параметр–значение». Между соответствующей записью ставится знак равенства. В данном поле могут передаваться несколько параметров. Для их разделения на письме используется символ «&».</li>
</ol>
<p>Обязательными для доступа к ресурсу – это Host и Scheme. Остальные перечисленные параметры могут отсутствовать.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8_HTTP"></span><em>Версии HTTP</em><span class="ez-toc-section-end"></span></h4>
<p>HTTP/1.1 – это один из наиболее стабильных протоколов подключения. Он имеет несколько проблем:</p>
<ul>
<li>передача заголовков в несжатой форме, а тела сообщения – в «форматированном» представлении;</li>
<li>передача по интернету даже тех частей заголовков, которые совпадали;</li>
<li>отсутствие мультиплексирования.</li>
</ul>
<p>Перечисленные проблемы удалось устранить вместе с HTTP/2. Теперь информация разбивается на фреймы, встраиваемые непосредственно в поток информации.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8"></span>Заголовки<span class="ez-toc-section-end"></span></h3>
<p>HTTP-заголовок – это «длинный текст», сформированный в формате «Имя-Заголовок-Значение» с двоеточием в виде разделяющего символа. Название заголовка запроса не учитывает регистр. Согласно действующим негласным правилам, принято каждое отдельное слово в такой записи указывать с заглавной буквы.</p>
<p>Структурная форма у заголовков будет меняться – она напрямую зависит от конкретного заголовка. Исходная запись заголовка может быть велика, но она всегда занимает всего одну строчку.</p>
<p>Заголовки делятся на несколько видов:</p>
<ol>
<li>Общего назначения. Они относятся ко всему сообщению.</li>
<li>Заголовки запроса. С их помощью удается уточнить информацию о запросах, сообщая дополнительный контекст или используя ограничения, представленные логическими условиями.</li>
<li>Заголовки представления. Они описывают формат данных сообщения, а также используемый тип кодировки. Добавляются к запросу не всегда – необходимы только тогда, когда с заголовком передается некоторое тело.</li>
</ol>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="499" height="470" src="https://otus.ru/journal/wp-content/uploads/2023/05/image-66.png" alt="HTTP-запросы и статусы" class="wp-image-6329" srcset="https://otus.ru/journal/wp-content/uploads/2023/05/image-66.png 499w, https://otus.ru/journal/wp-content/uploads/2023/05/image-66-300x283.png 300w, https://otus.ru/journal/wp-content/uploads/2023/05/image-66-150x141.png 150w" sizes="(max-width: 499px) 100vw, 499px" /></figure>
<p>Выше – примеры наиболее распространенных заголовков запроса.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B5%D0%BB%D0%BE_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0"></span><em>Тело запроса</em><span class="ez-toc-section-end"></span></h4>
<p>Заключительная часть посылаемой на сервер «команды». Может отсутствовать у некоторых запросов: het, options, delete, head. Некоторые такие «команды» умеют отправлять данные непосредственно на серверную сторону. Наиболее распространенным вариантом является post.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B_HTTP"></span>Ответы HTTP<span class="ez-toc-section-end"></span></h3>
<p>HTTP-ответ – это сообщение, которое будет отправляться сервером клиенту на посланную для обработки «команду». Его структура окажется точно такой же, как и в случае с HTTP Request: стартовая строчка, заголовок и тело.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B5%D0%BB%D0%BE_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0"></span><em>Тело ответа</em><span class="ez-toc-section-end"></span></h4>
<p>Тело ответа – это заключительная его часть. Присутствует у большинства ответов, но не является обязательным компонентом. Некоторые коды ошибок и ответов не предусматривают тел, потому что все необходимые данные сообщаются в заголовке.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%B8_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0"></span><em>Заголовки ответа</em><span class="ez-toc-section-end"></span></h4>
<p>Заголовки ответа применяются для уточнения ответа. Они никак не отражаются на содержимом тела. Поддерживаются в том же формате, что и остальные заголовки: «Имя–Значение» с разделителем-двоеточием.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="489" height="274" src="https://otus.ru/journal/wp-content/uploads/2023/05/image-67.png" alt="HTTP-запросы и статусы" class="wp-image-6330" srcset="https://otus.ru/journal/wp-content/uploads/2023/05/image-67.png 489w, https://otus.ru/journal/wp-content/uploads/2023/05/image-67-300x168.png 300w, https://otus.ru/journal/wp-content/uploads/2023/05/image-67-150x84.png 150w" sizes="(max-width: 489px) 100vw, 489px" /></figure>
<p>Выше можно увидеть несколько наиболее распространенных в ответах заголовков.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B0"></span><em>Строка статуса ответа</em><span class="ez-toc-section-end"></span></h4>
<p>Строка статуса или status line – это компонент, который включает в себя:</p>
<ul>
<li>версию протокола;</li>
<li>код протокола, указывающий на факт успешной обработки «команды» на сервере;</li>
<li>пояснение – небольшое текстовое описание к коду состояния, используемое для упрощения понимания и восприятия данных человеком.</li>
</ul>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="571" height="321" src="https://otus.ru/journal/wp-content/uploads/2023/05/image-68.png" alt="HTTP-запросы и статусы" class="wp-image-6331" srcset="https://otus.ru/journal/wp-content/uploads/2023/05/image-68.png 571w, https://otus.ru/journal/wp-content/uploads/2023/05/image-68-300x169.png 300w, https://otus.ru/journal/wp-content/uploads/2023/05/image-68-150x84.png 150w" sizes="(max-width: 571px) 100vw, 571px" /></figure>
<p>Вот – пример того, как выглядит строка состояния вышестоящего сервера. Далее предстоит более подробно изучить состояния и их коды, а также расшифровку ошибок. Эта информация пригодится как новичкам, так и более опытным специалистам. С ее помощью даже рядовой пользователь сможет выяснить, почему сервер не может обработать посланную «команду».</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B8%D0%BF%D1%8B_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2"></span>Типы кодов<span class="ez-toc-section-end"></span></h2>
<p>Коды состояния применяются для того, чтобы указать клиенту статус посланной «команды». Server может вернуть код, который относится к одной из пяти категорий:</p>
<figure class="wp-block-table"><table><tbody><tr><td>Категория</td><td>Что значит</td></tr><tr><td>1xx</td><td>Информативные сообщения. На обработку «команды» такие коды никак не влияют.</td></tr><tr><td>2xx</td><td>Коды, которые будут возвращаться при успешной обработке «команды».</td></tr><tr><td>3xx</td><td>Коды, используемые для перенаправления пользователя.</td></tr><tr><td>4xx</td><td>Error. Коды, указывающие на то, что клиент сформировал некорректный запрос.</td></tr><tr><td>5xx</td><td>Показываются, если произошла ошибка сервера.</td></tr></tbody></table></figure>
<p>Далее более подробно будут рассмотрены категории 4xx и 5xx. Они помогут понять, когда и почему необходимо повторить запрос, указанный в заголовке.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"></span>Клиентские ошибки<span class="ez-toc-section-end"></span></h3>
<p>К клиентским ошибкам (типа 4xx) относят:</p>
<ol>
<li>400 Bad Request. Ответ от браузера, который может быть получен, если сервер не смог правильно отреагировать на посланную «команду». В основном появляется тогда, когда не соблюдается синтаксис протокола передачи. </li>
<li>401 Unauthorized. Появляется, если клиент использует неправильные авторизационные данные (authentication required).</li>
<li>402 Payment Required. Указывается при необходимости оплаты доступа к серверной части.</li>
<li>403 Forbidden. Работает аналогично ошибке 401. Серверная часть не позволяет подключение, хотя сама «команда» сформирована правильно. К проекту просто нет доступа.</li>
<li>404 Not Found. Наиболее распространенный вид ошибки. Появляется, если «команда» ведет в никуда. Выводится при попытке попасть на несуществующую страничку.</li>
<li>405 Method Not Allowed. Указывает на то, что метод, используемый клиентом, не разрешен. Пример – это попытка ввода данных в форму через Get со стороны клиента, если соответствующая операция работает только с Post.</li>
<li>406 Not Acceptable. Сообщение, которое указывает на то, что веб-сайт передает контент, который не может быть распознан с клиентской стороны. Проблема заключается в методе сжатия, формате страницы и так далее. Иногда высвечивается при неправильной конфигурации кодировки. Встречается код крайне редко.</li>
<li>407 Proxy Authentication Required. Работает почти так же, как и 401. Разница заключается в том, что логин и пароль требуются для прокси, а не для основного подключения.</li>
<li>408 Request Timeout. Разрыв соединения с клиентской частью ввиду того, что подключение не используется. Сервер долгое время ждал ответа, но соединение не было налажено. Эта ошибка часто появляется после длительной и безуспешной попытки зайти на ту или иную веб-страничку.</li>
<li>409 Conflict. Несоответствие запроса с клиентской стороны ожиданиям сервера.</li>
<li>410 Gone. Аналог 404 ошибки, который указывает на перманентность отсутствия веб-страницы.</li>
<li>411 Length Required. Сервер не хочет принимать «команды» со стороны клиента, потому что отсутствует определение заголовка Content-Length. </li>
<li>412 Precondition Failed. Указывает на отклонение пользовательской «команды». Доступ к выбранному проекту не разрешен. В основном возникает ввиду неправильной настройки работы методов.</li>
<li>413 Payload Too Large. Посланная «команда» с клиентской стороны слишком длинная.</li>
<li>414 URL Too Long. Превышение лимита длины URL.</li>
<li>415 Unsupported Media Type. Загрузка данных на сервер в неподходящем формате.</li>
<li>429 Too Many Request. На сервер было послано слишком много запросов за небольшой промежуток времени.</li>
<li>450 Blocked Windows Parental Controls. Сообщение, которое будет часто преследовать детей. Оно указывает на родительский контроль от Microsoft. Высвечивается, если пользователь пытался посетить запрещенный родителем ресурс. Изменяется ситуация при помощи корректировки параметров упомянутой ранее службы.</li>
<li>431 Request Header Fields Too Large. В посылаемой «команде» применяются слишком длинные заголовки.</li>
</ol>
<p>Перечисленные ошибки не являются исчерпывающими. <a href="https://timeweb.com/ru/community/articles/kody-oshibok-servera" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Здесь<span class="wpel-icon wpel-image wpel-icon-6"></span></a> можно увидеть еще несколько их примеров.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"></span><em>Серверные ошибки</em><span class="ez-toc-section-end"></span></h4>
<p>Ошибки и неполадки могут возникать не из-за неправильных клиентских действий, а ввиду серверных сбоев. В основном такие сообщения появляются тогда, когда не удается обработать посланные «команды».</p>
<p>К числу серверных ошибок относят:</p>
<ol>
<li>500 Internal Server Error. Это код, который появляется, если сервер сталкивается с непредвиденными обстоятельствами.</li>
<li>501 Not Implemented. Указывает на отсутствие реализации функциональности, необходимой для обработки «команды».</li>
<li>502 Bad Gateway. Встречается, если серверная сторона – это шлюз или прокси. Выскакивает, если обнаруживается несогласованность протоколов между вышестоящим сервером и его шлюзом.</li>
<li>503 Service Unavailable. Возникает, если не получается обработать запрос клиента по одной из двух технических причин. Первая – это слишком большое количество пользователей пытаются отправить запросы. У серверной части проекта не остается ресурсов для отправки ответа. Вторая – это проведение технических работ.</li>
<li>504 Gateway Timeout. Напоминает 408 ошибку. Здесь превышен тайм-аут при попытке сервера выйти на контакт с вышестоящим сервером.</li>
<li>505 HTTP Version Not Supported. В клиент-серверной модели используются разные протоколы подключения HTTP.</li>
<li>506 Variant Also Negotiates. Возникает при неправильной первоначальной настройке серверной стороны. Указывает на сбои базовых конфигураций.</li>
<li>507 Insufficient Storage. Указывает на нехватку со стороны серверной части пространства в хранилище для обработки клиентской «команды».</li>
<li>508 Loop Detected. Высвечивается при обнаружении бесконечного цикла в клиентском запросе. Может расцениваться как провал запроса и всей обрабатываемой операции.</li>
<li>509 Bandwidth Limit Exceeded. Указывает на то, что серверная сторона потребляет трафика больше, чем позволено.</li>
<li>510 Not Extended. Высвечивается, если клиент отправляет запрос на использование какого-либо расширения, отсутствующего на сервере. Исправляется путем избавления от декларирования неподдерживаемых расширений из конструкции. Можно добавить поддержку того или иного компонента на сервер.</li>
<li>511 Network Authentication Required. Указывает на то, что перед выходом в сеть необходимо авторизоваться.</li>
</ol>
<p>Теперь понятно, какие HTTP-статусы встречаются в location заголовка. Лучше освоить протоколы подключения к Сети и вероятные ошибки, а также способы их исправления помогут специализированные компьютерные курсы.</p>
<p>P. S. Интересуют компьютерные сети, сетевые технологии, протоколы передачи данных? Обратите внимание на следующие курсы в Otus:</p>
<ul>
<li>«<a href="https://otus.ru/lessons/setevoy-inzhener/?utm_source=oj&utm_medium=affilate&utm_campaign=netengine" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Network engineer<span class="wpel-icon wpel-image wpel-icon-6"></span></a>«;</li>
<li>«<a href="https://otus.ru/lessons/setevoy-inzhener-basic/?utm_source=oj&utm_medium=affilate&utm_campaign=netengine_basic" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Network engineer. Basic<span class="wpel-icon wpel-image wpel-icon-6"></span></a>«.</li>
</ul>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/http/" rel="tag" data-wpel-link="internal">HTTP</a><a href="https://otus.ru/journal/tag/seti/" rel="tag" data-wpel-link="internal">сети</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fhttp-zaprosi-i-statusi%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fhttp-zaprosi-i-statusi%2F&text=HTTP-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B%20%D0%B8%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D1%8B" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fhttp-zaprosi-i-statusi%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fhttp-zaprosi-i-statusi%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2023%2F05%2Foj-1080x72039-1.jpg&description=HTTP-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B%20%D0%B8%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D1%8B" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/kljuchevoe-slovo-static-v-java/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/kljuchevoe-slovo-static-v-java/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Ключевое слово static в Java" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72038-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72038-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72038-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72038-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72038-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72038-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Ключевое слово static в Java" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/kljuchevoe-slovo-static-v-java/" data-wpel-link="internal">Ключевое слово static в Java</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/kljuchevoe-slovo-static-v-java/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-05-14T15:07:39+00:00">14 мая, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">7 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/jquery-i-uslovnye-konstrukcii-if/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/jquery-i-uslovnye-konstrukcii-if/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="JQuery и условные конструкции IF" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72040-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72040-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72040-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72040-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72040-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/05/oj-1080x72040-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="JQuery и условные конструкции IF" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/jquery-i-uslovnye-konstrukcii-if/" data-wpel-link="internal">JQuery и условные конструкции IF</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/jquery-i-uslovnye-konstrukcii-if/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-05-14T15:59:48+00:00">14 мая, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">4 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/http-zaprosi-i-statusi\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 15:27:37 GMT -->