From fd5220c6f7be653494e625fd2a0732fdfad137e8 Mon Sep 17 00:00:00 2001 From: kyumoon Date: Wed, 5 Jul 2023 02:11:08 +0900 Subject: [PATCH] fix(nuxt): add cookies on server side fetching `useCookie` --- packages/nuxt/src/app/composables/cookie.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/nuxt/src/app/composables/cookie.ts b/packages/nuxt/src/app/composables/cookie.ts index 8fbfcfecce..3dca553ba9 100644 --- a/packages/nuxt/src/app/composables/cookie.ts +++ b/packages/nuxt/src/app/composables/cookie.ts @@ -63,6 +63,9 @@ export function useCookie (name: string, _opts?: } } else if (process.server) { const nuxtApp = useNuxtApp() + if (!isEqual(cookie.value, cookies[name])) { + writeServerTempararyCookie(useRequestEvent(nuxtApp), name, cookie.value) + } const writeFinalCookieValue = () => { if (!isEqual(cookie.value, cookies[name])) { writeServerCookie(useRequestEvent(nuxtApp), name, cookie.value, opts) @@ -99,6 +102,16 @@ function writeClientCookie (name: string, value: any, opts: CookieSerializeOptio } } +function writeServerTempararyCookie (event: H3Event, name: string, value: any) { + // add cookie to req.headers.cookie ex) cookie is added or updated in plugin + if (event) { + const cookie = event.node.req.headers.cookie || '' + event.node.req.headers.cookie = cookie + ? `${cookie}; ${name}=${value}` + : `${name}=${value}` + } +} + function writeServerCookie (event: H3Event, name: string, value: any, opts: CookieSerializeOptions = {}) { if (event) { // update if value is set