Incorrect work of WicketFilter with UTF-8 urls through proxy_ajp_module and
ajp connector
------------------------------------------------------------------------------------------
Key: WICKET-2836
URL: https://issues.apache.org/jira/browse/WICKET-2836
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.4.7
Environment: Apache 2.2 http server with configured proxy_ajp_module,
Tomcat 5.5, wicket 1.4.7
Reporter: Igor Azarny
Preconditions:
Working application on tomacat 5.5 with non SSL HTTP/1.1 connector , that has
utf-8 encoded URLs
Connector configuration :
<Connector port="8080" maxHttpHeaderSize="8192" URIEncoding="UTF-8"
maxThreads="400" maxKeepAliveRequests="100"
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443"
acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true" compression="on"/>
Configured virtual host on apache http server:
Listen 81
NameVirtualHost *:81
<VirtualHost *:81>
ServerName jewelry.npa.com
<Proxy *>
AddDefaultCharset utf-8
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ajp://jewelry.npa.com:8009/
ProxyPassReverse / ajp://jewelry.npa.com:8009/
AddDefaultCharset utf-8
</VirtualHost>
Configured ajp connector on tomcat 5.5
<Connector port="8009" useBodyEncodingForURI="false"
maxHttpHeaderSize="8192" URIEncoding="UTF-8"
maxThreads="400"
maxKeepAliveRequests="100" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
compression="on" protocol="AJP/1.3" />
Problem:
All requests, that has utf-8 url and NOT served by wicket filter works ok.
All requests, that has utf-8 url and served by wicket filter works incorrect,
because of encoding issue with ajp connector and incorect work of
WicketFilter#getRelativePath(HttpServletRequest request) lines 590 - 594.
Explanation:
ajp module change the percent encoding
(http://en.wikipedia.org/wiki/Percent-encoding)
Proposed fix:
Need to use request.getServletPath() instead of request.getRequestURI() to get
the relativePath, because of
HttpServletRequest sepecification
http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/http/HttpServletRequest.html
Please look at difference getServletPath returns DECODED value, but
getRequestURI and getRequestURL - not.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira