Download Latest Version v2.7.1 source code.zip (588.2 kB) Google Add to Preferred Sources
Home / v2.7.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-09-17 3.0 kB
v2.7.0 source code.tar.gz 2026-09-17 515.8 kB
v2.7.0 source code.zip 2026-09-17 585.0 kB
Totals: 3 Items   1.1 MB 0

HTTP v2.7.0

Diff since v2.6.7

HTTP.jl 2.7.0 adds opt-in request logging and configurable HTTP/1 header limits. It also fixes response reuse, HTTP/2 informational responses, Host ordering, and cookie handling.

Added

  • HTTP.Handlers.logging_middleware provides opt-in request and error logs.
  • HTTP.Transport accepts max_line_bytes and max_header_bytes; the default HTTP/1 line limit is now 64 KiB.
  • setheader!, appendheader!, and removeheader! are aliases for the existing mutating header functions.
  • The docs publish llms.txt and llms-full.txt with expanded API docstrings.

Fixed

  • String response bodies can be reused. New pre-send checks reject spent BytesBody and CallbackBody values; bodyless responses remain valid.
  • HTTP/2 accepts informational responses such as 103 Early Hints and correctly handles headers and trailers split across frames.
  • HTTP/1 writes Host as the first header field.
  • Adding request cookies uses semicolons and preserves separately stored cookie fields.
  • Server error handling accepts any thrown Julia value, keeping error responses and access logs consistent.
  • The connection pool honors server Keep-Alive timeout hints.
  • Cookie Max-Age=0 expires the cookie.
  • Per-request TLS configuration uses Reseau's copy constructor.

Julia 1.10 remains the minimum supported version.

Merged pull requests:

  • Expire the cookie on Set-Cookie Max-Age=0 (#1357) (@dylanpulver)
  • Honor server Keep-Alive timeout hints in the HTTP/1 connection pool (#1358) (@quinnj)
  • Add setheader!, appendheader! and removeheader! aliases (#1359) (@quinnj)
  • Copy the per-request TLS config through Reseau's keyword copy constructor (#1363) (@quinnj)
  • Keep String response bodies reusable and refuse to resend a spent streaming body (#1364) (@quinnj)
  • Raise the HTTP/1 line limit to 64 KiB and expose header limits on Transport (#1365) (@quinnj)
  • Write Host as the first HTTP/1.1 request header field (#1366) (@quinnj)
  • Publish LLM documentation and prepare HTTP 2.7.0 (#1367) (@quinnj)
  • Add an opt-in request logging middleware (#1368) (@quinnj)
  • Skip informational (1xx) header blocks in the HTTP/2 client (#1369) (@quinnj)
  • Join request cookies with "; " instead of the appendheader comma fold (#1370) (@youdie006)

Closed issues:

  • HTTP Keep-Alive header should be respected with connection pooling (#1155)
  • Missing ! in header-mutating functions (#1277)
  • Documentation: Baked responses via streamhandler must have Vector{UInt8} bodies (#1333)
  • Should HTTP.jl 2.x include a request logging middleware? (#1345)
  • feat: llms.txt support (#1351)
  • HTTP/2 client treats a 1xx informational response (e.g. 103 Early Hints) as the final response head, then fails with "response trailers must end the stream" (#1360)
  • HTTP/1.1 client sends the Host header last; RFC 9112 §3.2 says it should be first (#1361)
  • HTTP/1 client rejects response header lines over 8 KiB, with no way to raise the limit (#1362)
Source: README.md, updated 2026-09-17