diff --git a/.changeset/quiet-games-retire.md b/.changeset/quiet-games-retire.md new file mode 100644 index 000000000..476ef2dda --- /dev/null +++ b/.changeset/quiet-games-retire.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/aws": patch +--- + +fix cookies for edge converters diff --git a/packages/open-next/src/overrides/converters/edge.ts b/packages/open-next/src/overrides/converters/edge.ts index bc1f2f677..1dc531a81 100644 --- a/packages/open-next/src/overrides/converters/edge.ts +++ b/packages/open-next/src/overrides/converters/edge.ts @@ -78,7 +78,22 @@ const converter: Converter = { } const headers = new Headers(); for (const [key, value] of Object.entries(result.headers)) { - headers.set(key, Array.isArray(value) ? value.join(",") : value); + if (key === "set-cookie" && typeof value === "string") { + // If the value is a string, we need to parse it into an array + // This is the case for middleware direct result + const cookies = parseCookies(value); + for (const cookie of cookies) { + headers.append(key, cookie); + } + continue; + } + if (Array.isArray(value)) { + for (const v of value) { + headers.append(key, v); + } + } else { + headers.set(key, value); + } } return new Response(result.body as ReadableStream, {