Выбор ответа Middle HTTP для тестировщика обновлено
Пробел и спецсимволы в URL
Вопрос
Тестировщик ищет товар по строке кофе & чай через GET /search?q=.... Что произойдёт, если подставить строку как есть, без кодирования?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: & разорвёт параметр: сервер увидит q=кофе и отдельный параметр чай. В query-строке & разделяет параметры, поэтому без percent-encoding строка развалится.
Варианты ответа
- Ничего: браузер сам закодирует пробелы и
&, и сервер получит строку целиком &разорвёт параметр: сервер увидитq=кофеи отдельный параметрчайправильный ответ- Сервер вернёт 414 URI Too Long из-за некодированной кириллицы в адресе
- Клиент отправит запрос как POST, потому что в URL есть спецсимволы
Разбор
В query-строке & разделяет параметры, поэтому без percent-encoding строка развалится. Правильно q=%D0%BA%D0%BE%D1%84%D0%B5%20%26%20...: пробел %20 (или + в формах), & это %26. Кириллицу браузер закодирует сам, а вот &, #, ? и + в значениях это классический источник багов. 414 бывает при слишком длинном адресе, а метод от содержимого URL не меняется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.