繁体   English   中英

Apache mod_proxy url编码

[英]Apache mod_proxy url encoding

我有一个REST服务,接受表单/ {parameter}中的参数

还有Apache2将请求转发给Web服务

<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

如果我直接请求webservice,Tomcat / Jetty会处理它,并且服务会收到正确的参数。

通过指定解决

ProxyPass /webservice balancer://api/webservice nocanon

有点偏离主题,因为这不能解决斜杠的问题,但无论如何,如果有其他人遇到与我相同的问题,我会在这里添加它。

我有类似的问题,在通过apache代理传递时,url参数中的瑞典特殊字符(åäö)未正确处理。 原来apache做得很好但是在接收tomcat实例中,AJP连接器缺少URIEncoding配置。

从我的tomcat server.xml:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8080" URIEncoding="UTF-8"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM