[
https://issues.apache.org/jira/browse/CXF-3403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Beryozkin resolved CXF-3403.
-----------------------------------
Resolution: Fixed
> ServletController getBaseURL can not handle encoded URIs in some cases
> ----------------------------------------------------------------------
>
> Key: CXF-3403
> URL: https://issues.apache.org/jira/browse/CXF-3403
> Project: CXF
> Issue Type: Bug
> Components: Transports
> Affects Versions: 2.3.3, 2.4
> Reporter: Sergey Beryozkin
> Assignee: Sergey Beryozkin
> Fix For: 2.4, 2.3.4
>
>
> ServletController.getBaseURL uses HttpServletRequest.getPathInfo() to
> determine the base URL.
> For example, given 'http://localhost:8080/services/1' and the pathInfo equal
> to '/1' the base URL is 'http://localhost:8080/services'.
> The problem with using the getPathInfo in the substring calculation is that
> it loses matrix parameters on the last path segment, ex, given
> 'http://localhost:8080/services/1;a=b' which will be reported by
> request.getRequestURL, the getPathInfo will report "/1" only and thus the
> base URL will be wrong. To bypass this issue, the initial attempt was to
> decode request.getRequestURL and strip off the final matrix params if any and
> only then calculate the base path. This solution breaks with encoded %3B
> characters - besides it is also slow (decoding costs).
> Another problem with getPathInfo() in that given that it returns the decoded
> value, the problem arise on some containers with requests URIs containing
> double encoded '/' symbols.
> A simpler and more reliable solution is needed
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira