RFR: 8185898: setRequestProperty(key, null) results in HTTP header without colon in request
Daniel Fuchs
daniel.fuchs at oracle.com
Wed Jul 31 11:30:24 UTC 2019
Hi Julia,
Could you verify that `HttpURLConnection::getHeaderField(0)` and
`HttpURLConnection::getHeaderFieldKey(0)` return the same thing
before and after the fix, for all implementations of
`HttpURLConnection` in the JDK?
I believe your test is missing that.
More specifically, I'm referring to this:
https://download.java.net/java/early_access/jdk13/docs/api/java.base/java/net/HttpURLConnection.html#getHeaderFieldKey(int)
"Some implementations may treat the 0th header field as special,
i.e. as the status line returned by the HTTP server. In this case,
getHeaderField(0) returns the status line, but getHeaderFieldKey(0)
returns null."
I wonder if the JDK itself was one of those implementations before
the fix. We do not want to change the behaviour of these methods.
best regards,
-- daniel
On 31/07/2019 11:56, Julia Boes wrote:
> Hi,
>
> Please find below a patch for:
>
> 8185898: setRequestProperty(key, null) results in HTTP header without
> colon in request
>
> https://bugs.openjdk.java.net/browse/JDK-8185898
>
> According to RFC 2616 <https://tools.ietf.org/html/rfc2616#section-4>,
> message headers of a HTTP message must adhere to the format:
>
> field-name ":" [ field-value ]
>
> Previously, the request line was handled like a message header and
> MessageHeader::print would omit ":" for message headers with value ==
> null to account for the request line. However, this can result in a
> regular message header missing the colon if its value is null. To fix
> this, MessageHeader.requestLine was added, which is used only for the
> status line of a request. Any use of MessageHeader.set(0) and
> MessageHeader.prepend() in HttpURLConnection was replaced by
> MessageHeader::setRequestLine.
>
> Webrev:
>
> http://cr.openjdk.java.net/~michaelm/jboes/8185898/webrev.1/
>
>
> Cheers,
>
> Julia
>
More information about the net-dev
mailing list