From 0d304d20c172a5adbbc482ae3bb6e103c8ff3a5f Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Thu, 21 Nov 2024 13:18:26 +0100 Subject: [PATCH] fix(http): Set content-length only if body is present --- .changeset/giant-days-develop.md | 7 +++++++ packages/open-next/src/http/request.ts | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 .changeset/giant-days-develop.md diff --git a/.changeset/giant-days-develop.md b/.changeset/giant-days-develop.md new file mode 100644 index 000000000..8d912a65d --- /dev/null +++ b/.changeset/giant-days-develop.md @@ -0,0 +1,7 @@ +--- +"@opennextjs/aws": patch +--- + +fix(http): Set content-length only if body is present + +The body is undefined when using the edge converter and the method is GET or HEAD diff --git a/packages/open-next/src/http/request.ts b/packages/open-next/src/http/request.ts index 88c68049e..35bc9e1b9 100644 --- a/packages/open-next/src/http/request.ts +++ b/packages/open-next/src/http/request.ts @@ -28,8 +28,10 @@ export class IncomingMessage extends http.IncomingMessage { destroy: Function.prototype, }); - if (typeof headers["content-length"] === "undefined") { - headers["content-length"] = Buffer.byteLength(body).toString(); + // Set the content length when there is a body. + // See https://httpwg.org/specs/rfc9110.html#field.content-length + if (body) { + headers["content-length"] ??= String(Buffer.byteLength(body)); } Object.assign(this, {