RFR: 8355572: Support HTTP Range requests in Simple Web Server [v14]
Daisuke Yamazaki
dyama at openjdk.org
Thu Feb 19 14:44:28 UTC 2026
On Sun, 16 Nov 2025 09:52:01 GMT, Daisuke Yamazaki <dyama at openjdk.org> wrote:
>> Hi all,
>>
>> [JEP 408](https://openjdk.org/jeps/408) introduced the Simple Web Server in Java 18, providing a minimal webserver for serving static files over HTTP.
>>
>> [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-range-requests) defines "Range Requests" as an optional feature that allows clients to request a subset of a resource's content. Supporting Range requests in the context of JDK's Simple Web Server means enabling the server to serve only the requested portion of a static file.
>>
>> This change contains:
>>
>> 1. Enhances `sun.net.httpserver.simpleserver.FileServerHandler` in the `jdk.httpserver` module to support `Range` and `If-Range` headers.
>> 2. Calculates an `ETag` for each resource based on its last-modified date and file size and sends it to the client on demand for use with the `If-Range` header.
>> 3. Returns the `Accept-Ranges` header for all file retrievals, and `Content-Range` when a client requests a specific range.
>> 4. Adds a new constant `HTTP_RANGE_NOT_SATISFIABLE` to the `Codes` class to indicate invalid ranges.
>> 5. Returns `206 Partial Content` for valid ranges and `416 Range Not Satisfiable` for invalid ranges.
>> 6. Includes corresponding tests to verify correct behavior.
>>
>> This enhancement was motivated by recent discussions on the net-dev mailing list, which requested support for Range requests along with example use cases: https://mail.openjdk.org/pipermail/net-dev/2025-April/026364.html
>> It was also discussed briefly on the net-dev mailing list: https://mail.openjdk.org/pipermail/net-dev/2025-October/028586.html
>
> Daisuke Yamazaki has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 30 commits:
>
> - Merge branch 'master' into 8355572-support-http-range-header
> - Fix HTTP Range header test case for invalid range format
> - Add test case for duplicate and overlapping HTTP Range headers
>
> Co-authored-by: Daniel Fuchs <dfuchs at openjdk.org>
> - Replace IOException with EOFException for unexpected EOF in FileServerHandler
> - Throw IOException on unexpected EOF while reading file in FileServerHandler
> - Implement range normalization for overlapping and contiguous HTTP Range headers
> - Add additional test cases for invalid HTTP Range header formats
> - Refactor parsing of HTTP Range header to remove radix specification in Long.parseLong calls
> - Add assertion to ensure end range value valid in HTTP Range header processing
> - Allow unlimited splits when parsing HTTP Range header to detect trailing commas
> - ... and 20 more: https://git.openjdk.org/jdk/compare/f510b4a3...082a76dc
Sure, I’ll update the PR.
I’ll also update the copyright year in the modified files while I’m at it.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/28021#issuecomment-3927719668
More information about the net-dev
mailing list