Выбор ответа Middle HTTP для тестировщика обновлено

Пробел и спецсимволы в URL

Вопрос

Тестировщик ищет товар по строке кофе & чай через GET /search?q=.... Что произойдёт, если подставить строку как есть, без кодирования?

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

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: & разорвёт параметр: сервер увидит q=кофе и отдельный параметр чай. В query-строке & разделяет параметры, поэтому без percent-encoding строка развалится.

Варианты ответа

  1. Ничего: браузер сам закодирует пробелы и &, и сервер получит строку целиком
  2. & разорвёт параметр: сервер увидит q=кофе и отдельный параметр чайправильный ответ
  3. Сервер вернёт 414 URI Too Long из-за некодированной кириллицы в адресе
  4. Клиент отправит запрос как POST, потому что в URL есть спецсимволы

Разбор

В query-строке & разделяет параметры, поэтому без percent-encoding строка развалится. Правильно q=%D0%BA%D0%BE%D1%84%D0%B5%20%26%20...: пробел %20 (или + в формах), & это %26. Кириллицу браузер закодирует сам, а вот &, #, ? и + в значениях это классический источник багов. 414 бывает при слишком длинном адресе, а метод от содержимого URL не меняется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.