Menu
Coddy logo textTech

Кодирование формы

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

При использовании -d curl добавляет заголовок, описывающий формат тела запроса:

Content-Type: application/x-www-form-urlencoded

Это длинное имя обозначает формат, который HTML-формы всегда использовали: пары key=value, соединённые с помощью &. Сервер читает этот заголовок и знает, что тело нужно разделить по этим символам.

Отсюда возникает очевидный вопрос: что, если значение содержит & или =? Его нужно экранировать, записав в виде знака процента и двух шестнадцатеричных цифр. Пробел превращается в %20 или +, амперсанд — в %26.

--data-urlencode выполняет это экранирование за вас, и для любых данных, введённых человеком, следует предпочитать именно его. Передача необработанных пользовательских данных через обычный -d приводит к тому, что поля таинственным образом обрезаются на первом амперсанде.

challenge icon

Задание

Сложно

Подтвердите заголовок, который curl выбирает для вас.

  1. Запустите прослушиватель захвата на порту 9124
  2. Отправьте POST с a=1 с помощью -d
  3. Выведите строку Content-Type из req.txt

Ожидаемый вывод:

Content-Type: application/x-www-form-urlencoded

Сопоставляйте без учёта регистра и привяжите шаблон к началу строки.

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

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

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

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

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