Методы, заголовки и коды состояния — рассказываем о ключевых элементах HTTP-запросов

Структура HTTP-сообщений
HTTP (HyperText Transfer Protocol) — это протокол передачи данных, при помощи которого пользователи взаимодействуют с различными ресурсами. Для этого используется клиент-серверная структура, где:
-
клиент — это устройство и программное обеспечение, с которых пользователь отравляет запрос;
-
сервер — программно-аппаратное устройство, обрабатывающее этот запрос.
HTTP-сообщения состоят из стартовой строки, заголовков, пустой строки и опционально — тела сообщения. Стартовая строка содержит методы, URL, версию протокола, код статуса и другие элементы.
Допустим, пользователь запускает на телефоне сайт — это уже запрос. А затем он заполняет форму заявки, например на странице администрирования, и отправляет данные на сервер. Тогда тело HTTP-сообщения будет включать соответствующую информацию: ФИО, почту и номер телефона.
Сервер обрабатывает запрос и затем выдает определенный ответ с аналогичной структурой: стартовой строкой, заголовками и телом сообщения. Первая строка ответа — строка статуса — содержит версию протокола, код состояния и пояснение.
Методы HTTP-запросов
HTTP-методы описывают действия, которые необходимо совершить серверу при обработке запроса: открыть страницу, скачать файл, предоставить какие-то данные.
-
GET. Используется при чтении данных, например открытии страниц сайта или просмотре разделов приложения.
-
POST. Применяется для отправки данных на сервер, например заполненных форм, или загрузки изображений и PDF-файлов.
-
HEAD. Если GET в ответ на свой запрос ожидает сообщение с заголовком и телом, то HEAD запрашивает только заголовки. Благодаря этому можно узнать размер ресурса до его загрузки.
-
PUT. Используется для обновления текущих и создания новых файлов на сервере. В отличие от POST обновляет данные, а не создает их копии. Например, с помощью PUT можно изменить документы или информацию о пользователях.
-
DELETE. Удаляет файлы с сервера. Требует осторожного применения и внимательной настройки, так как может привести к потере критически важных данных и использоваться злоумышленниками при эксплуатации уязвимостей сервиса.
-
OPTIONS. Запрашивает информацию о сервере, например о поддерживаемых HTTP-методах.
-
PATCH. Обновляет данные. В отличие от PUT позволяет сделать это частично, а не целиком.
Адрес ресурса
В HTTP-запросах URL содержит адрес страницы и другие параметры.
Scheme — указывает формат протокола и выражается двумя наклонными чертами ://. Напомним, если на ресурсе установлен SSL-сертификат, то к протоколу добавляется буква s, и он принимает вид https://
Host — указывает домен или IP-адрес ресурса.
Port — содержит номер порта. Если этот параметр не задан, указывает значение по умолчанию для версии протокола: например, 80 — для http://
Path — содержит путь к конкретной странице ресурса. Например, /service/solutions/administration/ — это путь в адресе нашей услуги IT-сопровождения. Если поле Path не задано, сервер укажет индексную страницу index.html или другое значение по умолчанию.
Query String — параметр URL, который начинается со знака вопроса (?) и указывается в формате «ключ-значение». Например, это могут быть utm-метки рекламной компании: ?utm_source=site&?utm_campaign=best_product
HTTP-заголовки
Заголовок выражается в формате «ключ-значение» c разделением двоеточием. Название заголовка не чувствительно к регистру, однако каждое его слово принято писать с большой буквы:
-
Host: example.com
-
Accept-Language: en-US
Один запрос может содержать несколько заголовков. Они решают различные задачи и бывают разных типов.
Заголовки запроса (Request Headers). Отправляются клиентом и предоставляют определенную информацию.
- Host — указывает адрес ресурса: домен или IP.
- Accept — сообщает, какие типы медиаконтента могут быть обработаны на стороне клиента.
- User-Agent — предоставляет информацию о клиенте: например, сведения о браузере и его версии, а также об операционной системе.
- Authorization — используется при передачи учетных данных для аутентификации.
- Cookie — передает данные о куках, сохраненных клиентом. Содержит пары формата куки — значения, которые используются как идентификатор, а также для других целей. Например, для сбора предпочтений и отслеживания сессий.
Заголовки ответа (Response Headers). Отправляются сервером в ответ на запрос.
- Content-Type — указывает тип содержимого, передаваемого сервером (например, text/html, application/json).
- Set-Cookie — устанавливает cookie.
Общие заголовки (General Headers). Используются в запросах и ответах.
- Date — указывает дату и время генерации заголовка.
- Connection — указывает, как следует обрабатывать соединение.
Заголовки сущности (Entity Headers) — описывают содержимое тела сообщения.
- Content-Length — указывает размер тела в байтах.
- Content-Encoding — указывает кодировку содержимого, например gzip.
- Last-Modified — указывает дату и время последнего изменения ресурса.
Коды состояния
Если все предыдущие пункты — это то, что спрятано под капотом запросов, то, например, ошибки HTTP увидят все: и владелец онлайн-проекта, и его пользователи. А вообще, коды состояния информируют о статусе запроса. И ответы сервера бывают пяти категорий:
-
100—199 — информационные;
-
200—299 — сообщают об успешной обработке запроса;
-
300—399 — информируют о перенаправлении;
-
400—499 — сообщают об ошибках на стороне клиента.
-
500—599 — отправляются при сбоях на стороне сервера.
Самое распространенные ошибки 4XX и 5XX можно исправить самостоятельно. Как это сделать, подробно рассказали здесь. А пока напомним о сервисах, с которыми вы сможете обеспечить высокую доступность и производительность вашим онлайн-проектам.
Хостинг с технической поддержкой 24/7. Виртуальный хостинг, облако или выделенный сервер — где бы вы ни разместили онлайн-проект, наши специалисты помогут разобраться с техническим вопросом, даже если вы оставите заявку ночью, в выходные или праздники.
Администрирование серверов. Сэкономьте на самостоятельном обслуживании IT-инфраструктуры. Закажите услугу администрирования, и наши специалисты обеспечат вашим серверам круглосуточный мониторинг и диагностику ошибок, что позволит заранее предотвращать сбои в работе онлайн-проекта. А еще вы получите 250 Гб дискового пространства для резервных копий, которое всегда можно расширить.
Объектное хранилище S3. Храните медиаконтент проекта и другие неструктурированные данные в гибком и экономичном облачном сервисе. А для работы с чувствительной информацией используйте аттестованное S3-хранилище. Подробнее о сценариях использования S3 рассказали здесь.