[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-1995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17153553#comment-17153553
 ] 

Michael Osipov edited comment on HTTPCLIENT-1995 at 7/8/20, 1:12 PM:
---------------------------------------------------------------------

bq. Anyhow, the main stumbling point is whether or not we should continue using 
java.net.URI for request URI representation. We already discussed it and that 
discussion led nowhere.

I disagree here. My proposal was to create a custom class until Oracle comes 
along with a decent fix. I'd happily live we a custom one if that really solves 
all of the problems. I hate {{java.net.URI}} with a passion.

Reference: https://cr.openjdk.java.net/~dfuchs/writeups/updating-uri/ and 
https://bugs.openjdk.java.net/browse/JDK-8019345. As well as 
https://github.com/dmfs/uri-toolkit.


was (Author: michael-o):
bq. Anyhow, the main stumbling point is whether or not we should continue using 
java.net.URI for request URI representation. We already discussed it and that 
discussion led nowhere.

I disagree here. My proposal was to create a custom class until Oracle comes 
along with a decent fix. I'd happily live we a custom one if that really solves 
all of the problems. I have {{java.net.URI}} with a passion.

Reference: https://cr.openjdk.java.net/~dfuchs/writeups/updating-uri/ and 
https://bugs.openjdk.java.net/browse/JDK-8019345. As well as 
https://github.com/dmfs/uri-toolkit.

> Percent-encoded ampersand in URI path not preserved
> ---------------------------------------------------
>
>                 Key: HTTPCLIENT-1995
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1995
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient (classic)
>    Affects Versions: 4.5.8, 4.5.9
>         Environment: Linux Mint 19, OpenJDK 8
>            Reporter: none_
>            Priority: Major
>
> Starting with HttpClient 4.5.8, percent-encoded ampersand characters in URI 
> path segments are not preserved any longer but written in decoded form to 
> wire due to path normalization performed by URIUtils.rewriteURI(URI, 
> HttpHost).
>  
> According to RFC 3986 (page 11+), the ampersand character is a delimiter and 
> thus needs to be percent-encoded when not used for this purpose. Path 
> normalization, as performed by HttpClient v4.5.8+, creates a new URI that is 
> not equivalent to the original URI and thus leads to misinterpretation on 
> server/receiver side.
> ??URIs that differ in the replacement of a reserved character with its??
> ??corresponding percent-encoded octet are not equivalent. Percent-??
> ??encoding a reserved character, or decoding a percent-encoded octet??
> ??that corresponds to a reserved character, will change how the URI is??
> ??interpreted by most applications??.
>   
> A very simple test case is as follows:
> {code:java}
> @Test
> public void testAmpersand() throws Throwable
> {
>     final URI uri = new 
> URI("http://example.org/some/path%26with%20percent/encoded/segments";);
>     final URI uri2 = URIUtils.rewriteURI(uri, null);
>         
>     Assert.assertEquals(uri, uri2);
> }
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to