HttpCookie: Unparseable Expires attribute causes immediate expiration
Daniel Fuchs
daniel.fuchs at oracle.com
Mon Mar 2 15:32:31 UTC 2026
Hi,
On which version of the JDK did you observe this behavior?
The behaviour of HttpCookie.parse has been updated in JDK 26,
so I would expect this to be fixed in JDK 26.
See: https://bugs.openjdk.org/browse/JDK-8359343
Could you try to reproduce the issue on JDK 26?
https://jdk.java.net/26/
If the behavior still persists, then yes it's probably a bug
since the specification for getMaxAge() now says:
```
+ * The value of this attribute is determined by the following
steps, in line
+ * with RFC 6265:
+ *
+ * <ol><li>If {@link #setMaxAge(long)} was called, return the value
set.</li>
+ * <li>If previous step failed, and a {@code Max-Age} attribute was
parsed
+ * then return that value.</li>
+ * <li>If previous step failed, and an {@code Expires} attribute
was parsed
+ * then the maxAge calculated at parsing time from that date, is
returned</li>
+ * <li>If previous step failed, then return {@code -1}.</li></ol>
```
best regards,
-- daniel
On 02/03/2026 13:35, Hyunsu Eun wrote:
> Hi,
>
> It seems that java.net.HttpCookie treats cookies with an
> unparseable Expires attribute as immediately expired.
>
> According to RFC 6265 (section 5.2.1), if the Expires value
> fails to parse as a cookie date, the attribute should be ignored.
> In that case, the cookie should remain a session cookie rather
> than being treated as expired.
>
> From reading the implementation, this appears to stem from
> HttpCookie.expiryDate2DeltaSeconds() returning 0 when parsing
> fails, after which maxAge is set to 0.
>
> Would this be considered a bug?
>
> I can provide a small reproducer if helpful, and would be
> happy to file a JBS issue and prepare a patch if appropriate.
>
> Thanks,
> Hyunsu Eun
More information about the net-dev
mailing list