diff options
author | 2024-02-07 16:09:39 +0000 | |
---|---|---|
committer | 2024-02-07 21:39:39 +0530 | |
commit | 0699f34d5c4481c027c4d29d73944f79f97008df (patch) | |
tree | 8515ffb1d2194fb60eb0e816ee034e3a03e97895 /packages/integrations/vercel/src/serverless/middleware.ts | |
parent | 9ef79173a6a826a7ee20682c6925a18e6ec839d3 (diff) | |
download | astro-0699f34d5c4481c027c4d29d73944f79f97008df.tar.gz astro-0699f34d5c4481c027c4d29d73944f79f97008df.tar.zst astro-0699f34d5c4481c027c4d29d73944f79f97008df.zip |
feat(vercel): middleware verification (#9987)
* feat(vercel): verification for edge middleware
* add changeset
* Apply suggestions from code review
---------
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Diffstat (limited to 'packages/integrations/vercel/src/serverless/middleware.ts')
-rw-r--r-- | packages/integrations/vercel/src/serverless/middleware.ts | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/packages/integrations/vercel/src/serverless/middleware.ts b/packages/integrations/vercel/src/serverless/middleware.ts index 648bc0d68..91d032873 100644 --- a/packages/integrations/vercel/src/serverless/middleware.ts +++ b/packages/integrations/vercel/src/serverless/middleware.ts @@ -1,7 +1,12 @@ import { existsSync } from 'node:fs'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { builtinModules } from 'node:module'; -import { ASTRO_LOCALS_HEADER, ASTRO_PATH_HEADER, NODE_PATH } from './adapter.js'; +import { + ASTRO_MIDDLEWARE_SECRET_HEADER, + ASTRO_LOCALS_HEADER, + ASTRO_PATH_HEADER, + NODE_PATH, +} from './adapter.js'; /** * It generates the Vercel Edge Middleware file. @@ -17,11 +22,13 @@ import { ASTRO_LOCALS_HEADER, ASTRO_PATH_HEADER, NODE_PATH } from './adapter.js' export async function generateEdgeMiddleware( astroMiddlewareEntryPointPath: URL, vercelEdgeMiddlewareHandlerPath: URL, - outPath: URL + outPath: URL, + middlewareSecret: string ): Promise<URL> { const code = edgeMiddlewareTemplate( astroMiddlewareEntryPointPath, - vercelEdgeMiddlewareHandlerPath + vercelEdgeMiddlewareHandlerPath, + middlewareSecret ); // https://vercel.com/docs/concepts/functions/edge-middleware#create-edge-middleware const bundledFilePath = fileURLToPath(outPath); @@ -56,7 +63,8 @@ export async function generateEdgeMiddleware( function edgeMiddlewareTemplate( astroMiddlewareEntryPointPath: URL, - vercelEdgeMiddlewareHandlerPath: URL + vercelEdgeMiddlewareHandlerPath: URL, + middlewareSecret: string ) { const middlewarePath = JSON.stringify( fileURLToPath(astroMiddlewareEntryPointPath).replace(/\\/g, '/') @@ -85,6 +93,7 @@ export default async function middleware(request, context) { fetch(new URL('${NODE_PATH}', request.url), { headers: { ...Object.fromEntries(request.headers.entries()), + '${ASTRO_MIDDLEWARE_SECRET_HEADER}': '${middlewareSecret}', '${ASTRO_PATH_HEADER}': request.url.replace(origin, ''), '${ASTRO_LOCALS_HEADER}': trySerializeLocals(ctx.locals) } |