From 607f90f07b26a9358faf7bde947ba2e34674b3ff Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Fri, 9 Aug 2024 15:25:24 -0400 Subject: [PATCH] fix: check cookie after handling POST requests --- packages/astro/src/actions/runtime/middleware.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/astro/src/actions/runtime/middleware.ts b/packages/astro/src/actions/runtime/middleware.ts index dff8be331e6a..a6c354d54cf0 100644 --- a/packages/astro/src/actions/runtime/middleware.ts +++ b/packages/astro/src/actions/runtime/middleware.ts @@ -30,14 +30,6 @@ export const onRequest = defineMiddleware(async (context, next) => { // so short circuit if already defined. if (locals._actionPayload) return next(); - const actionPayload = context.cookies.get(ACTION_QUERY_PARAMS.actionPayload)?.json(); - if (actionPayload) { - if (!isActionPayload(actionPayload)) { - throw new Error('Internal: Invalid action payload in cookie.'); - } - return renderResult({ context, next, ...actionPayload }); - } - // Heuristic: If body is null, Astro might've reset this for prerendering. if (import.meta.env.DEV && request.method === 'POST' && request.body === null) { // eslint-disable-next-line no-console @@ -58,6 +50,14 @@ export const onRequest = defineMiddleware(async (context, next) => { return handlePostLegacy({ context, next }); } + const actionPayload = context.cookies.get(ACTION_QUERY_PARAMS.actionPayload)?.json(); + if (context.request.method === 'GET' && actionPayload) { + if (!isActionPayload(actionPayload)) { + throw new Error('Internal: Invalid action payload in cookie.'); + } + return renderResult({ context, next, ...actionPayload }); + } + return next(); });