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

Detlev Beutner commented on HTTPCLIENT-1006:
--------------------------------------------

Hi there,

Some follow-up some years later ;-)

# Concerning RFC 2109, as Liang Sung pointed out, quoted-strings are allowed 
for values. So, following this (very old) RFC, the double-quotes should NOT be 
stripped.
# Concerning RFC 2965, the same holds: "value       =     token | 
quoted-string" and so on... No mentioning to strip the quotes.
# Concerning the current RFC 6265, the same holds again: "cookie-value      = 
*cookie-octet / ( DQUOTE *cookie-octet DQUOTE )" and so on... No mentioning to 
strip the quotes.

So far about the theory, with very good hint by Liang Sun for the technical 
background / need.
Now concerning reality, I have the following example:

Call https://launchpad.support.sap.com (the main support site of SAP!) and 
trace the http traffic. launchpad.support.sap.com redirects via JS to 
authn.hana.ondemand.com, which again redirects via JS to 
accounts.sap.com(/saml2/idp/sso/accounts.sap.com). The last request leads to a 
response with a header as follows:

Set-Cookie      
XSRF_COOKIE="77+976SSde+/vQFq77+9HO+/vXND77+977+9dGwQ77+9Fu+/vXBtTe+/ve+/vUZt77+9cFfvv706MTQ4MjkzNDg4Nzk1NA==";
 Version=1; Path=/; Secure; HttpOnly

The value (base64 encoded value of some binary stuff and a timestamp), sent 
back to the server, in about 60% needs to be enclosed by doublequotes, 
otherwise the server answers with a 400 (bad request), probably for similar 
reasons Liang Sun pointed out (the given value above for example needs the DQs).

Now, how do browsers work with this?
# IE11: Sends the value back with double quotes.
# FF50.1: Sends the value back with double quotes.
# Chrome 54: Sends the value back with double quotes.

Currently, the following CookieSpecs are non-deprecated:
NETSCAPE
STANDARD
STANDARD_STRICT
DEFAULT

>From these only NETSCAPE supports the persistence of the double quotes (where 
>in fact the old Netscape cookie draft did not mention DQs at all, but also did 
>not explicitly exclude them).

>From the real-world scenarios given above, the pragmatic DEFAULT /has/ to 
>persist the DQs, too.

>From the RFC 6265, as well as 4.1.1 as 5.2 Alg. 1 (esp. #6, which defines that 
>the DQ's are part of the value itself), STANDARD as well as STANDARD_STRICT 
>/have/ to persist the DQs, too.

So I would suggest to re-open and fix this. I cannot realize any reason for any 
of the currently supported CookieSpecs (which handle cookies at all; i.e. 
except IGNORE_COOKIES ;-)) why to strip the DQs. If somewhere in the world 
there is an example for such a need, I think /for this/ a new spec might be 
needed. Stripping the DQs in the current specs is just a bug (and always was).

Best regards, Detlev

> BrowserCompatSpec: don't trim " around cookie value
> ---------------------------------------------------
>
>                 Key: HTTPCLIENT-1006
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1006
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient (classic)
>    Affects Versions: 4.0.2
>            Reporter: Marc Guillemot
>
> If the server sends a cookie header like:
> Set-Cookie: first="hello world"
> then HttpClient parses it as cookie with value >hello world<, wrongly 
> removing the leading and trailing quotes. The incorrect quote removal occurs 
> in BasicHeaderValueParser.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to