diff --git a/package-lock.json b/package-lock.json index 0fcd30bead..9ec4f547cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24173,7 +24173,7 @@ }, "packages/runtime": { "name": "@netlify/plugin-nextjs", - "version": "4.30.4", + "version": "4.30.5-setcookie.0", "license": "MIT", "dependencies": { "@netlify/esbuild": "0.14.39", diff --git a/packages/runtime/src/templates/edge-shared/utils.ts b/packages/runtime/src/templates/edge-shared/utils.ts index fb09b18aba..ce6772fb1a 100644 --- a/packages/runtime/src/templates/edge-shared/utils.ts +++ b/packages/runtime/src/templates/edge-shared/utils.ts @@ -31,12 +31,11 @@ export const addMiddlewareHeaders = async ( // We need to await the response to get the origin headers, then we can add the ones from middleware. const res = await originResponse const response = new Response(res.body, res) - const originCookies = response.headers.get('set-cookie') middlewareResponse.headers.forEach((value, key) => { - response.headers.set(key, value) - // Append origin cookies after middleware cookies - if (key === 'set-cookie' && originCookies) { - response.headers.append(key, originCookies) + if (key === 'set-cookie') { + response.headers.append(key, value) + } else { + response.headers.set(key, value) } }) return response diff --git a/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts b/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts index c9d60ce5a7..6f5ddf5f24 100644 --- a/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts +++ b/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts @@ -52,14 +52,14 @@ describe('skip-trailing-slash-redirect', () => { redirect: 'manual', }) expect(res.status).toBe(200) - expect(res.headers.get('set-cookie')).toEqual('from-middleware=1; Path=/, hello=From API') + expect(res.headers.get('set-cookie')).toEqual('hello=From API, from-middleware=1; Path=/') }) it('should merge cookies from middleware and edge API routes correctly', async () => { const res = await fetchViaHTTP(next.url, '/api/test-cookie-edge', undefined, { redirect: 'manual', }) expect(res.status).toBe(200) - expect(res.headers.get('set-cookie')).toEqual('from-middleware=1; Path=/, hello=From%20API; Path=/') + expect(res.headers.get('set-cookie')).toEqual('hello=From%20API; Path=/, from-middleware=1; Path=/') }) if ((global as any).isNextStart) {