- Порезанный
- 7 августа 2026 г. в 04:07 UTC
- Автор
- Kamo
- Обещать
- 3c24d32
Каждый URL-адрес, который строит этот шлюз, собирается из getRequestURI(). getQueryString() — оба уже закодированы в процентах — и затем были переданы Восстановление как струна. Перегрузки String от RestTemplate не берут URL; они Возьмите URI TEMPLATE, расширенный DefaultUriBuilderFactory, который RestTemplate Настройка в EncodingMode.URI COMPONENT. Этот режим кодирует каждый компонент, и «%» не является шаром, поэтому существующий побег снова ускользнул: %2C осталось как %252C. Служба upstream декодировала один раз и получила буквальный токен A%2CB — один Значение, куда абонент отправил два. Для каждого из них есть своя воронка. /api/<x>/** маршрут, поэтому /api/docs, /api/security, /api/kb, /api/media и остальные Все они были затронуты одновременно; значения, не имеющие зарезервированного характера, являются фиксированной точкой. Это то, что делает его прерывистым и легким для промаха. ToUpstreamUri() анализирует URL, а перегрузка URI Exchange() обходит Обработчик шаблонов полностью, поэтому байты пересекают хмель нетронутыми. Это не прямой обмен на URI.create. Этот метод проникает в Персонаж, который является незаконным в URI - сырое пространство, ' |', '{}, усеченный побег И такой запрос работает именно сегодня, потому что второй код восстанавливает его. На Незаконном Аргументе Исключение помощник возвращает нуль, а вызывающий передает Струна для RestTemplate точно так же, как и раньше, с ПРЕДУПРЕЖДЕНИЕм URL, так что случай Они видны вместо тишины. Правильный трафик перестает быть искаженным; искаженным Трафик ведет себя точно так же, как и он. Все пять биржевых площадок этого класса — вперед, впередWebhook, впередCallback и два помощника POST - вперед через один обмен Upstream, так что два кодирования не могут дрейфовать на сайте вызова. Тесты утверждают, что URI фактически покидает RestTemplate через MockRestServiceServer. Вместо возвратного значения помощника, так как кодирование происходит внутри. RestTemplate: status=PENDING%2CIN PROGRESS поставляется с ровно одним уровнем кодирование и отсутствие %25 где-либо; перегрузка строки прикреплена к тому, что двойная кодировка; необработанное пространство, усеченный %2 и {id} скобка каждое падение назад Вместо того, чтобы бросать; и обычный повторный парам-запрос неизменен в любом случае. mvn -o тест: 29 тестов, 0 отказов.