diff --git a/.changeset/mean-crabs-ring.md b/.changeset/mean-crabs-ring.md new file mode 100644 index 000000000..5c1c496f5 --- /dev/null +++ b/.changeset/mean-crabs-ring.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/aws": patch +--- + +fix(edge-converter): Ensure null body status codes dont return a body diff --git a/packages/open-next/src/overrides/converters/edge.ts b/packages/open-next/src/overrides/converters/edge.ts index 7cd6d8aed..af4d6d11d 100644 --- a/packages/open-next/src/overrides/converters/edge.ts +++ b/packages/open-next/src/overrides/converters/edge.ts @@ -15,6 +15,9 @@ declare global { var __dangerous_ON_edge_converter_returns_request: boolean | undefined; } +// https://fetch.spec.whatwg.org/#statuses +const NULL_BODY_STATUSES = new Set([101, 103, 204, 205, 304]); + const converter: Converter = { convertFrom: async (event: Request) => { const url = new URL(event.url); @@ -97,7 +100,12 @@ const converter: Converter = { } } - return new Response(result.body as ReadableStream, { + // We should not return a body for statusCode's that doesn't allow bodies + const body = NULL_BODY_STATUSES.has(result.statusCode) + ? null + : (result.body as ReadableStream); + + return new Response(body, { status: result.statusCode, headers, });