[
https://issues.apache.org/jira/browse/CXF-6015?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel updated CXF-6015:
------------------------
Description:
If a REST service uses path parameters, these parameters must not contain any
semicolon as the parameter value gets truncated after the semicolon by many
runtime environments. For that reason especially the semicolon should be
encoded while building the client proxy.
I pinned this issue down to the usage of
{{org.apache.cxf.jaxrs.utils.HttpUtils.pathEncode(String)}} during the creation
of the request URI. Path parameters are encoded using a fixed list of
characters ({{=@/:!$&\'(),;~}}) that are preserved in {{pathEncode(String)}}.
While this is fine/needed for encoding a complete path it leads to problems if
used for encoding single elements of a path like path parameters.
Attached you'll find a minimal example project containing a simple REST service
that returns the provided path parameters. If deployed on localhost:8080, a
call to
{{http://localhost:8080/cxf-test-0.1/rest/cxf-test/Rüdiger/Rü%3Bdiger}}
will result in {{anAttribute=Rü, anotherAttribute=Rüdiger}} to be
returned.
was:
If a REST service uses path parameters, these parameters must not contain any
semicolon as the parameter value gets truncated after the semicolon by many
runtime environments. For that reason especially the semicolon should be
encoded while building the client proxy.
I pinned this issue down to the usage of
{{org.apache.cxf.jaxrs.utils.HttpUtils.pathEncode(String)}} during the creation
of the request URI. Path parameters are encoded using a fixed list of
characters ({{=@/:!$&\'(),;~}}) that are preserved in {{pathEncode(String)}}.
While this is fine/needed for encoding a complete path it leads to problems if
used for encoding single elements of a path like path parameters.
Attached you'll find a minimal example project containing a simple REST service
that returns the path provided parameters. If deployed on localhost:8080, a
call to
{{http://localhost:8080/cxf-test-0.1/rest/cxf-test/Rüdiger/Rü%3Bdiger}}
will result in {{anAttribute=Rü, anotherAttribute=Rüdiger}} to be
returned.
> Path parameters containing semicolon are truncated due to missing encoding
> --------------------------------------------------------------------------
>
> Key: CXF-6015
> URL: https://issues.apache.org/jira/browse/CXF-6015
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Affects Versions: 2.7.12, 3.0.1
> Environment: Apache Tomcat / 7.0.54
> Eclipse Jetty / 9.2.2
> Reporter: Daniel
> Attachments: cxf-test.zip
>
>
> If a REST service uses path parameters, these parameters must not contain any
> semicolon as the parameter value gets truncated after the semicolon by many
> runtime environments. For that reason especially the semicolon should be
> encoded while building the client proxy.
> I pinned this issue down to the usage of
> {{org.apache.cxf.jaxrs.utils.HttpUtils.pathEncode(String)}} during the
> creation of the request URI. Path parameters are encoded using a fixed list
> of characters ({{=@/:!$&\'(),;~}}) that are preserved in
> {{pathEncode(String)}}. While this is fine/needed for encoding a complete
> path it leads to problems if used for encoding single elements of a path like
> path parameters.
> Attached you'll find a minimal example project containing a simple REST
> service that returns the provided path parameters. If deployed on
> localhost:8080, a call to
> {{http://localhost:8080/cxf-test-0.1/rest/cxf-test/Rüdiger/Rü%3Bdiger}}
> will result in {{anAttribute=Rü, anotherAttribute=Rüdiger}} to
> be returned.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)