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 转发到代理之前解码该 URL?
答案1
mod_proxy
将传递到后端的 URL 规范化。如果您想要禁止此行为,请使用nocanon
关键字,这将传递 URL 路径“生的”到后端。
例如:
ProxyPass / http://127.0.0.1:8081/ nocanon