13

/{parameter} の形式でパラメーターを受け入れる REST サービスがあります。

また、リクエストをWebサービスに転送するApache2もあります

<VirtualHost *:9091>
  AllowEncodedSlashes NoDecode
  LogLevel debug
  ProxyPass /webservice balancer://api/webservice

  <Proxy balancer://api>
     BalancerMember http://localhost:8030
  </Proxy>
</VirtualHost>

パラメータには、%2f (/) などのエンコードされた文字が含まれる場合があります

問題は、Apache がこれらの文字を再度エンコードし、Web サービスが %2F ではなく %252F を受け取ることです。

[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 が検索を処理し、サービスが正しいパラメーターを受け取ります。

4

2 に答える 2

15

指定することで解決

ProxyPass /webservice balancer://api/webservice nocanon
于 2013-01-15T13:41:49.353 に答える
1

これはスラッシュの問題を解決しないため、少し話題から外れていますが、他の誰かが私と同じ問題に遭遇した場合は、とにかくここに追加します.

URLパラメータのスウェーデン語の特殊文字(åäö)がApacheプロキシを通過したときに正しく処理されないという同様の問題がありました。apache は正常に動作していたことが判明しましたが、受信側の tomcat インスタンスでは、AJP コネクタに URIEncoding 構成がありませんでした。

私のTomcat server.xmlから:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8080" URIEncoding="UTF-8"/>
于 2015-09-10T07:45:54.137 に答える