[ https://issues.apache.org/jira/browse/CXF-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Beryozkin reassigned CXF-1795: ------------------------------------- Assignee: Sergey Beryozkin > 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 > > 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.