From e3442cfea860fec38da32d1873ddf444e6db615f Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Wed, 21 May 2025 19:50:03 -0600 Subject: [PATCH] Update index.ts --- src/routes/index.ts | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/routes/index.ts b/src/routes/index.ts index c388c84..f1ea501 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -11,12 +11,26 @@ import { } from '@/utils/turnstile'; export default defineEventHandler(async (event) => { - // handle cors, if applicable - if (isPreflightRequest(event)) return handleCors(event, {}); + // Handle preflight CORS requests + if (isPreflightRequest(event)) { + handleCors(event, {}); + // Ensure the response ends here for preflight + event.node.res.statusCode = 204; + event.node.res.end(); + return; + } - // parse destination URL + // Reject any other OPTIONS requests + if (event.node.req.method === 'OPTIONS') { + throw createError({ + statusCode: 405, + statusMessage: 'Method Not Allowed', + }); + } + + // Parse destination URL const destination = getQuery<{ destination?: string }>(event).destination; - if (!destination) + if (!destination) { return await sendJson({ event, status: 200, @@ -26,8 +40,10 @@ export default defineEventHandler(async (event) => { })`, }, }); + } - if (!(await isAllowedToMakeRequest(event))) + // Check if allowed to make the request + if (!(await isAllowedToMakeRequest(event))) { return await sendJson({ event, status: 401, @@ -35,12 +51,13 @@ export default defineEventHandler(async (event) => { error: 'Invalid or missing token', }, }); + } - // read body + // Read body and create token if needed const body = await getBodyBuffer(event); const token = await createTokenIfNeeded(event); - // proxy + // Proxy the request try { await specificProxyRequest(event, destination, { blacklistedHeaders: getBlacklistedHeaders(), @@ -59,4 +76,4 @@ export default defineEventHandler(async (event) => { console.log('Error fetching', e); throw e; } -}); +}); \ No newline at end of file