Apache, получение запроса с закодированной точкой с запятой (% 3B) декодирует его перед передачей запроса прокси (серверная часть Spring Tomcat).
Соответствующие строки виртуального хоста apache:
ProxyPreserveHost on
RequestHeader set X-Forwarded-Proto https
ProxyPass / http://127.0.0.1:8081/
ProxyPassReverse / http://127.0.0.1:8081/
Так, например, когда запрос URL-адреса
http://testsite.com/page/%27+many+times%3B+the+valiant/author
Будет ли прокси-сервер перенаправлен как
http://testsite.com/page/%27+many+times/author
Могу ли я что-то сделать, чтобы предотвратить декодирование этого URL-адреса apache перед его перенаправлением на прокси?
Возможно, соответствующая проблема отмечена на apache.org/bugzilla
mod_proxy
канонизировать URL-адреса, передаваемые на бэкэнд. Если вы хотите подавить такое поведение, используйте ключевое слово nocanon
, и это передаст URL-путь "raw" серверной части.
Например:
ProxyPass / http://127.0.0.1:8081/ nocanon