Wicket
  1. Wicket
  2. WICKET-2836

Incorrect work of WicketFilter with UTF-8 urls through proxy_ajp_module and ajp connector

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.4.7
    • Fix Version/s: 1.5.0
    • Component/s: wicket
    • Labels:
      None
    • Environment:
      Apache 2.2 http server with configured proxy_ajp_module, Tomcat 5.5, wicket 1.4.7

      Description

      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.

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Martin Grigorov
            Reporter:
            Igor Azarny
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 24h
              24h
              Remaining:
              Remaining Estimate - 24h
              24h
              Logged:
              Time Spent - Not Specified
              Not Specified

                Development