Apache解码分号 – mod_proxy

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.org/bugzilla上提到相关的问题

mod_proxy规范化传递给后端的URL。 如果要禁止这种行为,请使用nocanon关键字,并将URLpath“raw”传递给后端。

例如:

 ProxyPass / http://127.0.0.1:8081/ nocanon