Протокол HTTP что это такое / Урок 23 / Тестировщик с нуля

Протокол HTTP что это такое / Урок 23 / Тестировщик с нуля

Введение в клиент-серверную архитектуру и HTTP протокол

Обзор раздела: В этом разделе мы будем изучать клиент-серверную архитектуру и HTTP протокол. HTTP является протоколом прикладного уровня, который используется для обмена данными между клиентом и сервером.

Что такое HTTP протокол?

  • Протокол передачи гипертекста (HTTP) - это протокол прикладного уровня, который передает текстовую информацию с помощью гиперссылок.
  • Гипертекст означает наличие ссылок в тексте, которые позволяют переходить по ним для получения дополнительной информации.

Как работает запрос и ответ в HTTP?

  • Протокол HTTP предполагает обмен данными между клиентом и сервером через запросы и ответы.
  • Запросы и ответы выполняются в короткий промежуток времени, похожий на челночный бег.
  • Браузер делает первоначальный запрос к серверу, получает первую страничку и сканирует ссылки на этой страничке для дальнейшего получения информации.
  • Запросы и ответы между клиентом и сервером могут проходить через прокси, которые выполняют определенные функции передачи данных.

Клиенты в контексте HTTP

  • Клиентами в HTTP могут быть различные приложения, такие как браузеры, инструменты для тестирования (например, Postman), мобильные приложения или пользовательские приложения.
  • Прокси - это промежуточные узлы между клиентом и сервером, которые выполняют определенные функции обработки запросов.

Заключение

Обзор раздела: В этом разделе мы рассмотрели основы клиент-серверной архитектуры и HTTP протокола. Мы изучили, что такое HTTP протокол, как работает обмен данными через запросы и ответы, а также роль клиента и прокси в этом процессе.

Веб-сервер и его функции

Обзор раздела: В этом разделе рассматривается веб-сервер и его функции, а также прокси-серверы.

Веб-сервер

  • Веб-сервер - это набор определенного софта, такого как Nginx или Apache Tomcat, который обрабатывает запросы и выполняет действия с полученными данными.
  • HTTP сервер является частью веб-сервера и отвечает за обработку запросов по протоколу HTTP.

Прокси-сервер

  • Прокси может выполнять несколько функций, включая кэширование данных. Это позволяет ускорить работу с сайтами, которые редко меняются или имеют незначительные изменения.
  • Прокси может также выполнять фильтрацию данных, например антивирусную проверку или родительский контроль.
  • Еще одной функцией прокси является балансировка нагрузки для равномерного распределения запросов между серверами.
  • Прокси может использоваться для аутентификации пользователей и контроля доступа к ресурсам.

Характеристики HTTP протокола

  • HTTP протокол является простым и расширяемым, так как использует текстовый формат для обмена данными между клиентом и сервером.
  • Заголовки в запросах и ответах позволяют передавать дополнительную информацию и расширять возможности коммуникации.
  • В отличие от некоторых других протоколов, HTTP не хранит состояние между запросами, что делает его проще и безопаснее в использовании.

Сессии в HTTP

  • Вместо состояния, HTTP использует сессии для сохранения информации о пользовательской активности. Обычно сессия хранится в куках (cookies), которые отправляются с каждым запросом.
  • Сессии позволяют сохранять данные между запросами, например при работе с корзиной товаров в интернет-магазине.

Особенности и расширяемость HTTP протокола

Обзор раздела: В этом разделе рассматривается особенности и расширяемость HTTP протокола.

Простота и читаемость

  • HTTP протокол является простым и читаемым, так как использует текстовый формат, понятный для человека.
  • Заголовки в запросах и ответах могут быть расширены для передачи различной информации.

Отсутствие состояния

  • HTTP не хранит состояние между запросами, что делает коммуникацию между клиентом и сервером проще и безопаснее.
  • Сессии в HTTP позволяют сохранять данные между запросами,

Выполнение запросов

Обзор раздела: В этом разделе рассматривается выполнение запросов с использованием простого способа. Пример приводится для HTTP GET-запроса.

Выполнение HTTP GET-запроса

  • Приведен пример выполнения простого HTTP GET-запроса.
  • Запрос представляет собой комбинацию метода, версии протокола и хоста.
  • Разбор составляющих запроса на уровне машинного кода.
  • Версия 1.1 наиболее распространена, но также встречаются версии 1.0 и 0.8.
  • Пустая строка после хоста указывает на окончание заголовков и начало тела сообщения.
  • Разделительные символы (перенос строки и возврат каретки) необходимы для правильной интерпретации запросов сервером.
  • Веб-серверы понимают перенос строки как разделитель информации.
  • Разделительные символы не нужно явно указывать, так как они подразумеваются при нажатии клавиши Enter.
  • Пустая строка после хоста указывает на начало отправки запроса.
  • Отправка запроса без тела и с пустой строкой после хоста.
  • GET-запросы могут содержать только хост, без дополнительной информации.
  • Пример выполнения GET-запроса в браузере.
  • POST-запросы содержат тело сообщения с дополнительной информацией.
  • Для передачи тела сообщения используется пустая строка после хоста.

Выводы

Выполнение запросов осуществляется путем указания метода, версии протокола и хоста. GET-запросы не содержат тело сообщения, в то время как POST-запросы могут содержать дополнительную информацию в виде тела сообщения. Разделительные символы (перенос строки и возврат каретки) необходимы для правильной интерпретации запросов сервером. Пустая строка после хоста указывает на начало отправки запроса.

Размер контента и методы HTTP запросов

Обзор раздела: В этом разделе рассматривается размер контента и основные методы HTTP запросов.

Размер контента и заголовки

  • При получении сообщения сервер смотрит на размер контента и тело, которое было отправлено. Он берет только то количество информации, которая была зашита в заголовке "Content-Length".
  • Заголовки и тело не являются обязательными атрибутами. Их отсутствие не вызывает проблем.
  • Некоторые возможные заголовки могут быть указаны в запросе, но они не обязательны.
  • Тело также может быть опущено в запросе.

Основные методы HTTP запросов

  • Существует 9 основных методов HTTP запросов, но на практике используется больше.
  • Самый популярный метод - GET. Он используется для получения данных с сервера.
  • Метод POST используется для отправки данных на сервер.
  • Метод PUT используется для замены существующего ресурса на новый.
  • Метод DELETE используется для удаления ресурса на сервере.
  • Метод HEAD похож на GET, но в ответе от сервера содержатся только заголовки без тела сообщения.
  • Метод OPTIONS используется для получения информации о доступных методах на сервере.
  • Метод TRACE используется для проверки связи с целевым ресурсом.
  • Метод PATCH используется для частичного обновления ресурса.

Импотентные методы

  • Импотентные методы - это методы, при которых повторный идентичный запрос имеет одинаковый результат и не меняет состояние сервера.
  • Примером импотентного метода является GET. При повторном запросе получаем одинаковый результат.
  • Примером неимпотентного метода является POST. При повторной отправке запроса будет создан новый ресурс.

Основные HTTP методы: GET, POST, PUT, DELETE

Обзор раздела: В этом разделе рассматривается основные HTTP методы: GET, POST, PUT и DELETE.

Метод GET

  • Метод GET используется для получения данных с сервера.
  • Запрос указывает на то, что мы хотим получить данные от сервера.

Метод POST

  • Метод POST используется для отправки данных на сервер.
  • Запрос содержит тело с информацией, которую мы отправляем на сервер.

Метод PUT

  • Метод PUT используется для замены существующего ресурса на новый.
  • Запрос содержит новое тело, которым мы заменяем существующий ресурс.

Метод DELETE

  • Метод DELETE используется для удаления ресурса на сервере.
  • Запрос указывает на то, что мы хотим удалить определенный ресурс.

Другие HTTP методы: HEAD, OPTIONS, TRACE, PATCH

Обзор раздела: В этом разделе рассматриваются другие HTTP методы: HEAD, OPTIONS, TRACE и PATCH.

Метод HEAD

  • Метод HEAD похож на GET, но в ответе от сервера содержатся только заголовки без тела сообщения.
  • Используется для получения информации о ресурсе без его фактического получения.

Метод OPTIONS

  • Метод OPTIONS используется для получения информации о доступных методах на сервере.
  • Запрос позволяет узнать, какие методы обрабатывает сервер.

Метод TRACE

  • Метод TRACE используется для проверки связи с целевым ресурсом.
  • Проверяет обратную связь по определенному пути к целевому ресурсу.

Метод PATCH

  • Метод PATCH используется для частичного обновления ресурса.
  • Отправляет запрос с ча

Пример использования метода "DELETE" вместо "POST" для удаления старых статей

Обзор раздела: В этом разделе рассматривается пример неправильного использования метода "POST" для удаления старых статей и предлагается использовать метод "DELETE" вместо него.

Использование методов "GET" и "POST"

  • Методы "GET" и "POST" являются основными методами клиент-серверного взаимодействия.
  • Метод "GET" используется для получения данных с сервера, а метод "POST" - для отправки данных на сервер.
  • Метод "POST" позволяет передавать информацию о том, что нужно удалить, добавить или обновить.

Неправильное использование метода "POST"

  • Некоторые разработчики ошибочно используют метод "POST" для удаления старых записей.
  • При каждом вызове метода "POST", самая старая запись удаляется, что может привести к нежелательным последствиям.
  • Это нарушает принцип RESTful API и может быть отмечено как ошибка.

Использование правильного метода

  • Для удаления старых записей следует использовать метод "DELETE".
  • Метод "DELETE" является более подходящим и соответствует принципам RESTful API.
  • Использование правильного метода поможет избежать ошибок и нежелательных последствий.

Протоколы и методы в клиент-серверной архитектуре

Обзор раздела: В этом разделе рассматривается основные протоколы и методы, используемые в клиент-серверной архитектуре.

Основные протоколы

  • Существуют четыре основных протокола в клиент-серверной архитектуре: "GET", "POST", "PUT" и "DELETE".
  • Эти протоколы соответствуют базовым операциям создания, чтения, обновления и удаления (CRUD).

Методы запросов

  • Метод "GET" используется для получения данных с сервера.
  • Метод "POST" используется для отправки данных на сервер.
  • Метод "PUT" используется для обновления данных на сервере.
  • Метод "DELETE" используется для удаления данных на сервере.

Значение протоколов и методов

  • Протоколы и методы являются стандартными операциями при общении между клиентом и сервером.
  • Понимание этих протоколов и методов позволяет эффективно работать с клиент-серверными системами.

Использование Postman для отправки запросов

Обзор раздела: В этом разделе рассматривается использование Postman для отправки запросов на сервер.

Отправка POST-запроса

  • Для отправки POST-запроса в Postman необходимо указать метод "POST".
  • В теле запроса указывается информация, которую нужно передать на сервер.
  • Заголовки могут содержать дополнительные параметры и информацию о запросе.

Пример использования Postman

  • При отправке POST-запроса в Postman, можно получить ответ от сервера.
  • Ответ содержит версию протокола, статус код и заголовки с информацией о ответе.
  • Тело ответа может содержать данные, возвращенные сервером.

HTTP ответы и заголовки

Обзор раздела: В этом разделе рассматривается HTTP ответы и заголовки при общении клиента с сервером.

Структура HTTP ответа

Коды состояния HTTP

Обзор раздела: В этом разделе рассматриваются коды состояния HTTP и их значения.

Коды 100-200

  • Коды 100, 200, 300, 400 и 500 имеют различные значения в HTTP.
  • Коды 200 обозначают успешное выполнение запроса, например, код 200 означает успешный GET-запрос.
  • Коды 300 указывают на перенаправление. Например, код 300 означает изменение URL запроса.
  • Коды 400 связаны с ошибками на стороне клиента. Например, код 400 означает некорректный запрос или отсутствие аутентификации.
  • Коды 400 также могут указывать на ошибки пути или неправильный метод запроса.
  • Коды 500 связаны с ошибками на сервере. Например, код 500 указывает на внутреннюю ошибку сервера или тайм-аут.

Заголовки HTTP

  • Заголовки HTTP содержат информацию о запросе или ответе.
  • Основные заголовки включают URL запроса, код состояния и реферера.
  • Разработчики могут использовать инструменты разработчика браузера для просмотра заголовков запросов и ответов.
  • Вкладка "Network" в инструментах разработчика позволяет просмотреть все запросы и соответствующие заголовки.

Политика реферера

  • Заголовок "Referer" передает информацию о предыдущем сайте, с которого был выполнен переход.
  • Политика реферера может быть настроена таким образом, чтобы скрыть эту информацию или запретить ее передачу.

Вопросы и ответы по кодам состояния HTTP

Обзор раздела: В этом разделе отвечается на вопросы, связанные с кодами состояния HTTP.

Какие значения имеют коды 100, 200, 300, 400 и 500?

  • Коды 100 - информационные сообщения, не несущие полезной нагрузки.
  • Коды 200 - успешное выполнение запроса.
  • Коды 300 - перенаправление на другой URL.
  • Коды 400 - ошибки на стороне клиента, например, некорректный запрос или отсутствие аутентификации.
  • Коды 500 - ошибки на сервере, указывающие на внутреннюю ошибку или тайм-аут.

Что означает код состояния HTTP 400 Bad Request?

  • Код состояния HTTP 400 Bad Request указывает на то, что запрос был сформулирован неправильно или содержит ошибку.

Что означает код состояния HTTP 404

Основные заголовки запроса

Обзор раздела: В этом разделе рассматриваются основные заголовки запроса и их значения.

Заголовки запроса

  • Заголовок "Cookies": содержит информацию о сохраненных cookies после предыдущего запроса.
  • Заголовок "Токен косма": отправляет токен, который сервер обязательно должен получить.
  • Заголовок "User-Agent": указывает, какой клиент отправил запрос.
  • Заголовок "Accept": определяет типы контента, которые мы готовы принять от сервера.
  • Заголовок "Content-Encoding": указывает, как сервер может сжимать информацию при передаче назад на клиентскую сторону.
  • Заголовок "Content-Type": сообщает серверу, какие типы контента мы готовы принять от него.
  • Заголовок "Accept-Encoding": указывает серверу, какие методы сжатия мы можем использовать для получения информации от него.

Дополнительные заголовки запроса

Обзор раздела: В этом разделе рассматриваются дополнительные заголовки запроса и их значения.

Дополнительные заголовки запроса

  • Заголовок "Connection": указывает, хотим ли мы продолжить соединение с сервером после получения ответа.
  • Заголовок "Referer": содержит информацию о странице, с которой был отправлен запрос.
  • Заголовок "Origin": указывает, откуда был отправлен запрос.
  • Заголовок "Cache-Control": управляет кэшированием информации на клиентской стороне.

Другие заголовки запроса

Обзор раздела: В этом разделе рассматриваются другие заголовки запроса и их значения.

Другие заголовки запроса

  • Заголовок "Accept-Language": определяет язык, на котором мы готовы принимать сообщения от сервера.

Выводы

Обзор раздела: В данном видео были рассмотрены основные и дополнительные заголовки запросов. Они играют важную роль в обмене информацией между клиентом и сервером. Понимание этих заголовков поможет вам лучше понять процесс передачи данных при выполнении HTTP-запросов.

Заголовок: User-Agent и кастомные заголовки

Обзор раздела: В этом разделе рассматривается User-Agent и кастомные заголовки, которые используются для расширения протокола.

User-Agent и его значение

  • User-Agent - это информация о клиентском приложении или устройстве, которая отправляется вместе с запросом на сервер.
  • User-Agent помогает серверу определить, какой тип клиента делает запрос.

Кастомные заголовки

  • Разработчики могут создавать собственные заголовки для расширения протокола.
  • Соглашение между разработчиками гласит, что названия собственных заголовков должны начинаться с "x-" и содержать дополнительное описание.

Значение заголовка Content-Type

  • Заголовок Content-Type указывает формат данных, в котором клиент хочет получить ответ от сервера.
  • Например, значение "application/json" указывает на желаемый формат JSON.

Заголовок Authorization

  • Заголовок Authorization используется для авторизации запросов.
  • Он может содержать различные значения в зависимости от типа авторизации (например, API ключ).

Заголовок: Контент и типы данных

Обзор раздела: В этом разделе рассматривается заголовок Content-Type и его значение, а также влияние типов данных на запросы и ответы.

Значение заголовка Content-Type

  • Заголовок Content-Type указывает формат данных, в котором клиент хочет получить ответ от сервера.
  • Например, "application/json" указывает на желаемый формат JSON.

Виды данных в запросах

  • Клиент может указать желаемый формат данных в заголовке запроса.
  • Сервер будет ориентироваться на этот заголовок при отправке ответа.

Виды данных в ответах

  • Сервер может вернуть данные в различных форматах, если он поддерживает эти типы данных.
  • Если сервер не поддерживает запрашиваемый формат, он может вернуть ошибку или другой доступный формат.

Заголовок: Авторизация и заголовок Authorization

Обзор раздела: В этом разделе рассматривается использование заголовка Authorization для авторизации запросов.

Заголовок Authorization

  • Заголовок Authorization используется для авторизации запросов.
  • Он содержит информацию о типе авторизации (например, API ключ) и его значение.

Конфигурирование заголовка Authorization

  • Заголовок Authorization может быть настроен для различных типов авторизации.
  • Например, в случае использования токена доступа, заголовок будет содержать соответствующее значение.

Заголовок: Заголовки ответа

Обзор раздела: В этом разделе рассматривается информация, которую сервер предоставляет в заголовках ответа.

Информация о сервере

  • Сервер предоставляет информацию о себе в заголовках ответа.
  • Это может включать название сервера и дату на сервере.

Информация о контенте

  • Сервер также предоставляет информацию о контенте, который он отправил клиенту.
  • Это может быть тип контента и другая связанная информация.

Описание сервера и заголовки

Обзор раздела: В этом разделе рассматривается описание сервера и заголовков, которые используются при тестировании.

Описание сервера и заголовки

  • Для тестирования необходимо иметь описание сервера, включая информацию о заголовках и значениях.
  • При тестировании необходимо проверять, что возвращаемые значения соответствуют ожидаемым.
  • Кросс-оригин заголовки (CORS) являются важными для тестировщиков.
  • Протокол HTTP подразумевает передачу сообщений между клиентом и сервером через промежуточные узлы.
  • Клиент может выступать в роли различных серверов, таких как Apache Tomcat.

Методы запросов и ответов

Обзор раздела: В этом разделе рассматриваются методы запросов и ответов протокола HTTP.

Методы запросов и ответов

  • Запросы формируются с использованием методов GET, POST, PUT и DELETE.
  • Ответы содержат версию протокола, статус код, заголовки и тело ответа.
  • Статус коды группируются по категориям (100-199, 200-299, 300-399, 400-499 и 500-599).
  • Cookies также являются одним из заголовков и содержат информацию в виде ключей и значений.

Заключение

Обзор раздела: В этом разделе подводятся итоги рассмотренного материала о протоколе HTTP.

Заключение

  • Протокол HTTP представляет собой передачу гипертекстовых сообщений между клиентом и сервером.
  • Cookies являются одним из заголовков и содержат информацию в виде ключей и значений.
  • Дальнейшее изучение протокола HTTP будет проводиться в следующих уроках.
Video description

Протокол HTTP , подробный разбор. 0:00 Протокол HTTP 10:15 Характеристики HTTP 13:55 HTTP Request 23:20 HTTP Methods / Методы HTTP 27:50 Идемпотентные методы 35:37 HTTP Response 41:50 HTTP HEADERS / Заголовки ⭐️ Хотите узнать от меня больше? Ознакомьтесь с этими ссылками: 1. Patreon - https://www.patreon.com/leshamarshall 2. Telegram — https://t.me/leshamarshal 3. Boosty — https://boosty.to/leshamarshal 4. VK — https://vk.com/leshamarshal #тестирование #интернет #лешамаршал

Протокол HTTP что это такое / Урок 23 / Тестировщик с нуля | YouTube Video Summary | Video Highlight