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

        

Reply via email to