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

ASF subversion and git services commented on HTTPCORE-763:
----------------------------------------------------------

Commit c99f4a81677cd34b17c7e73eef47654acb8713d5 in httpcomponents-core's branch 
refs/heads/master from Marco Bungart
[ https://gitbox.apache.org/repos/asf?p=httpcomponents-core.git;h=c99f4a816 ]

HTTPCORE-763: remove checks that assert a path does not start with "//"


> Behaviour of BasicHttpRequest wrt. path is inconsistent
> -------------------------------------------------------
>
>                 Key: HTTPCORE-763
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-763
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore
>    Affects Versions: 5.1, 5.2, 5.3-alpha1
>            Reporter: Marco Bungart
>            Priority: Minor
>             Fix For: 5.3-alpha2
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> The [Setter for {{path}} in 
> {{BasicHttpRequest}}|https://github.com/apache/httpcomponents-core/blob/26b3bc6d6dc56587afdb12d84361009d55a5197f/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java#L210]
>  checks whether the parameter {{path}} starts with two slashes and - if so - 
> throws an {{IllegalArgumentException}} (through the call to 
> [{{Args.check(...)}}|https://github.com/apache/httpcomponents-core/blob/26b3bc6d6dc56587afdb12d84361009d55a5197f/httpcore5/src/main/java/org/apache/hc/core5/util/Args.java#L39].
>  Similarly, method 
> [{{setUri(...)}}|https://github.com/apache/httpcomponents-core/blob/26b3bc6d6dc56587afdb12d84361009d55a5197f/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java#L264]
>  checks the raw path from tur {{URI}}.
> This leads to inconsistent behaviour. A constructor call like:
> {code:java}
> new BasicHttpRequest("GET", "http", URIAuthority.create("google.com"), 
> "//search/asdf?q=foobar");
> {code}
> works fine, while a constructor call like:
> {code:java}
> new BasicHttpRequest("GET", "http", URIAuthority.create("google.com"), 
> "doesNotMatter")
>             .setPath("//search/asdf?q=foobar");
> {code}
> or
> {code:java}
> new BasicHttpRequest("GET", 
> URI.create("https://www.google.com//search/asdf?q=foobar";));
> {code}
> throws an {{{}IllegalArgumentException{}}}.
> The Class {{BasicHttpRequest}} was extended in [commit 
> {{1614d5d}}|https://github.com/apache/httpcomponents-core/commit/1614d5d5a5de6f4faadff9ecb566982d56b65179]
>  and is present since.
> I think what should happen is that the path should only be checked for {{//}} 
> if the {{authority}} is not set since [RFC 3986 in section 
> 3|https://www.rfc-editor.org/rfc/rfc3986#section-3] specifies:
> {code}
>    The scheme and path components are required, though the path may be
>    empty (no characters).  When authority is present, the path must
>    either be empty or begin with a slash ("/") character.  When
>    authority is not present, the path cannot begin with two slash
>    characters ("//").
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to