You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Azarny (JIRA)" <ji...@apache.org> on 2010/09/11 15:14:33 UTC

[jira] Commented: (WICKET-2836) Incorrect work of WicketFilter with UTF-8 urls through proxy_ajp_module and ajp connector

    [ https://issues.apache.org/jira/browse/WICKET-2836?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908314#action_12908314 ] 

Igor Azarny commented on WICKET-2836:
-------------------------------------

Patch attached, was tested on tests and reall applications. 
3 tests failed, but failures related to MockHttpServletRequest and some assumtions in test rather than changes in provided patch. Hope somebody more experienced in wicket that me can change it. During fixing this bug the WICKET-3032 was raised.

> 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
>            Assignee: Igor Vaynberg
>         Attachments: wicket-2836.patch
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> 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.
-
You can reply to this email to add a comment to the issue online.