Формирование ответа
Урок 24 из 47 курса Сетевое взаимодействие в терминале на Coddy.
Вы прочитали множество ответов. Теперь напишите один.
nc -l прослушивает порт, и всё, что вы подаёте на его вход, отправляется первому подключившемуся клиенту. Так вы становитесь сервером, причём веб-сервер вообще не используется:
printf 'HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nhand written' | nc -l -p 9114 &Посмотрите, что это такое: строка состояния, один заголовок, пустая строка, затем тело. Именно такая структура, которую вы читали, набранная вручную.
Теперь это примет всё, что говорит по протоколу HTTP. Направьте curl на этот порт, и он сообщит о совершенно обычном ответе 200 с телом text/plain, потому что именно это и делает любой веб-сервер: записывает текст в такой структуре.
Этот приём действительно полезен в работе. Когда вам нужно увидеть, что именно отправляет вам какая-либо программа, поставьте на её пути nc -l и прочитайте создаваемый ею запрос.
Задание
ЭкспертСтань сервером вручную.
Используя nc -l на порту 9114, отдай ответ со строкой статуса HTTP/1.1 200 OK, заголовком Content-Type: text/plain и телом, в точности равным hand written. Затем получи его с помощью curl и выведи тело.
Ожидаемый вывод:
hand writtenИспользуй
printfс окончаниями строк\r\nи не забудь о пустой строке перед телом.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Сетевое взаимодействие в терминале
5HTTP вручную
Анатомия запросаМетоды запросовКоды состоянияЗаголовки ответаФормирование ответаПовторение: основы HTTP3Порты и сокеты
Что такое портХорошо известные портыЛокальный хостПрослушивание и подключениеПовторение: порты6curl в деталях
Просмотр заголовковСохранение ответовПользовательские заголовкиСтатус и время выполненияКоды выхода curlПовторение: флаги curl9Аутентификация и отладка
API-ключи и BearerUser-AgentТайм-ауты и повторные попыткиАнализ ошибкиПовторение: отладкаПотренируйтесь самостоятельно: Песочница Terminal