Menu
Coddy logo textTech

Анатомия запроса

Урок 20 из 47 курса Сетевое взаимодействие в терминале на Coddy.

Под капотом curl HTTP-запрос представляет собой обычный текст, отправленный через сокет. Он начинается с одной строки, в которой указывается, что именно вы хотите:

GET /index.html HTTP/1.1

Три части: метод (какого рода операция), путь (какой объект) и версия. После этого идут заголовки, по одному в строке, затем пустая строка, а после неё — необязательное тело.

Пустая строка — не просто оформление. Именно по ней сервер понимает, что заголовки закончились и начинается тело, если оно есть. Запрос без неё зависает, потому что сервер всё ещё ждёт продолжения.

Вы можете отправить запрос вручную. nc открывает необработанное соединение, и всё, что вы ему передадите, отправляется напрямую по сети:

printf 'GET / HTTP/1.0\r\n\r\n' | nc 127.0.0.1 9110

\r\n — это конец строки, который требуется HTTP, а два таких окончания подряд образуют пустую строку.

challenge icon

Задание

Сложно

Полностью пропусти curl и обратись к HTTP напрямую.

  1. Создай index.html, содержащий raw
  2. Запусти сервер для этой папки на порту 9110
  3. Отправь необработанный запрос GET /index.html HTTP/1.0 через nc и выведи только первую строку полученного ответа

Эта первая строка — строка состояния сервера. Ожидаемый вывод:

HTTP/1.0 200 OK

Не забудь пустую строку: printf 'GET /index.html HTTP/1.0\r\n\r\n'.

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Сетевое взаимодействие в терминале

Потренируйтесь самостоятельно: Песочница Terminal