cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (CXF-1795) REST header case sensitivity in CXF-2.1.2 / Tomcat AJP
Date Fri, 22 May 2009 14:20:45 GMT

     [ https://issues.apache.org/jira/browse/CXF-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Sergey Beryozkin resolved CXF-1795.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.1

This issue must have been fixed in 2.2.1 for JAX-RS. Please reopen the JIRA if you find it
is still not-working for you


> REST header case sensitivity in CXF-2.1.2 / Tomcat AJP
> ------------------------------------------------------
>
>                 Key: CXF-1795
>                 URL: https://issues.apache.org/jira/browse/CXF-1795
>             Project: CXF
>          Issue Type: Bug
>          Components: REST
>    Affects Versions: 2.1.2
>         Environment: Apache-2.2, Tomcat-6.0.18, mod_jk-1.2.26
>            Reporter: John Georgiadis
>            Assignee: Sergey Beryozkin
>             Fix For: 2.2.1
>
>
> HeaderParam labels in CXF-2.1.2 REST seem to be case sensitive. The problem appears only
when using Tomcat-6.0.18 through its AJP connector. It does not appear when Tomcat is accessed
through its HTTP connector. mod_jk (1.2.26) is passing headers unmodified to AJP, so differences
in AJP & HTTP connectors make this issue manifest.
> The following patch fixed the bug for us. The Tomcat HTTP connector also works with the
patch.
> I'm not sure whether other code paths are affected by the change in AbstractHTTPDestination,
however the line after the modified code:
> String mappedName = HttpHeaderHelper.getHeaderKey(fname);
> already maps common upper-case headers to lower-case (except Authentication).
> --- rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
   2008-08-12 23:31:10.000000000 +0300
> +++ rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
2008-09-11 21:31:56.000000000 +0300
> @@ -190,7 +190,7 @@
>        HttpServletRequest req = (HttpServletRequest)message.get(HTTP_REQUEST);
>        //TODO how to deal with the fields              for (Enumeration e = req.getHeaderNames();
e.hasMoreElements();) {
> -            String fname = (String)e.nextElement();
> +            String fname = ((String)e.nextElement()).toLowerCase();
>            String mappedName = HttpHeaderHelper.getHeaderKey(fname);
>            List<String> values;
>            if (headers.containsKey(mappedName)) {
> --- rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java     2008-08-12
23:30:37.000000000 +0300
> +++ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java  2008-09-11
21:29:53.000000000 +0300
> @@ -449,7 +449,7 @@
>    private static Object processHeaderParam(Message m, String header,               
                             Class<?> pClass, Type genericType, String defaultValue)
{
>        Map<String, List<String>> headers = (Map<String, List<String>>)m.get(Message.PROTOCOL_HEADERS);
> -        List<String> values = headers.get(header);
> +        List<String> values = headers.get(header.toLowerCase());
>        StringBuilder sb = new StringBuilder();
>        if (values != null) {
>            for (Iterator<String> it = values.iterator(); it.hasNext();) { 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message