我有一个 REST 服务,它接受 /{parameter} 形式的参数
还有 Apache2 将请求转发到网络服务
<VirtualHost *:9091>
AllowEncodedSlashes NoDecode
LogLevel debug
ProxyPass /webservice balancer://api/webservice
<Proxy balancer://api>
BalancerMember http://localhost:8030
</Proxy>
</VirtualHost>
参数可能包含编码字符,例如 %2f (/)
问题是 Apache 再次对这些字符进行编码,Webservice 收到 %252F 而不是 %2F
[Mon Oct 15 13:59:24 2012] [debug] mod_proxy_balancer.c(46): proxy: BALANCER: canonicalising URL //api/webservice/Interface GigabitEthernet1%2F0%2F2
[Mon Oct 15 13:59:24 2012] [debug] mod_proxy_balancer.c(581): proxy: BALANCER (balancer://api) worker (http://localhost:8030) rewritten to http://localhost:8030/Interface%20GigabitEthernet1%252F0%252F2%20Utilization
如果我直接请求 Web 服务,Tomcat/Jetty 会处理它并找到正确的参数。