From 768dc737872cfb7a3096c106dd566e287ea4f8e8 Mon Sep 17 00:00:00 2001 From: sijie-Z Date: Mon, 8 Jun 2026 22:03:11 +0800 Subject: [PATCH 1/2] fix(platform): stop emitting content-length in HttpClientRequest.setBody The transport layer (fetch/undici) is responsible for computing Content-Length from what it actually sends on the wire. Setting it preemptively from body.contentLength causes wire mismatches with undici 8.2+ which stopped auto-overriding caller-supplied headers. Fixes #6240 --- packages/platform/src/internal/httpClientRequest.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/platform/src/internal/httpClientRequest.ts b/packages/platform/src/internal/httpClientRequest.ts index 14fb718c526..bafafc5a870 100644 --- a/packages/platform/src/internal/httpClientRequest.ts +++ b/packages/platform/src/internal/httpClientRequest.ts @@ -394,11 +394,9 @@ export const setBody = dual< if (contentType) { headers = Headers.set(headers, "content-type", contentType) } - - const contentLength = body.contentLength - if (contentLength) { - headers = Headers.set(headers, "content-length", contentLength.toString()) - } + // Do not set content-length here — the transport layer (fetch/undici) + // computes the correct value from what it actually sends on the wire. + // See https://github.com/Effect-TS/effect/issues/6240 } return makeInternal( self.method, From 259b0887248b3e04f633c77a7cc38d61841ad536 Mon Sep 17 00:00:00 2001 From: sijie-Z Date: Tue, 9 Jun 2026 15:57:35 +0800 Subject: [PATCH 2/2] chore: add changeset --- .changeset/fix-content-length-request.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fix-content-length-request.md diff --git a/.changeset/fix-content-length-request.md b/.changeset/fix-content-length-request.md new file mode 100644 index 00000000000..3af8993d6da --- /dev/null +++ b/.changeset/fix-content-length-request.md @@ -0,0 +1,5 @@ +--- +"@effect/platform": patch +--- + +fix: stop emitting content-length header in HttpClientRequest.setBody