Короткий ответ
Согласно RFC 3986, пустой символ %
не является допустимым синтаксисом URI ; за ним должны следовать две значащие шестнадцатеричные цифры.
Длинный ответ
Полученный код состояния HTTP относится к классу 4xx
:
4xx: Client Error - The request contains bad syntax or cannot be fulfilled
Источник: Реестр кодов состояния протокола передачи гипертекста (HTTP)
В частности, код 400
определен Инженерной рабочей группой по Интернету (IETF) в RFC 2616:
10.4.1 400 неправильных запросов
Сервер не может понять запрос из-за неправильного синтаксиса. Клиент НЕ ДОЛЖЕН повторять запрос без изменений.
Источник: RFC 2616 - Протокол передачи гипертекста - HTTP/1.1
Цитирую Википедию (жирный акцент мой):
Символы, разрешенные в URI, являются зарезервированными или незарезервированными (или символом процента как частью кодировки процента).
Источник: процентное кодирование - процентное кодирование в URI
Если вы хотите вставить буквальный символ %
, вам нужно использовать его кодированное в процентах представление: %25
.
дальнейшее чтение