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
Могу ли я что-то сделать, чтобы Apache не декодировал этот URL-адрес перед его пересылкой на прокси?
Возможно соответствующая проблема отмечена на apache.org/bugzilla
mod_proxy
канонизировать URL-адреса, передаваемые на серверную часть. Если вы хотите подавить это поведение, используйте nocanon
ключевое слово, и это передает путь URL "сырой" на бэкэнд.
Например:
ProxyPass / http://127.0.0.1:8081/ nocanon