diff options
author | 2023-03-09 11:27:16 -0500 | |
---|---|---|
committer | 2023-03-09 11:27:16 -0500 | |
commit | 700a55549925e2a0ef2da378a20a2a5d35c53b93 (patch) | |
tree | ac6167f0ec634ab0ec522a06b1657cf19dc8ddb5 | |
parent | 1343a6469f91728d5f9718895b4eaeab1ca07190 (diff) | |
download | astro-700a55549925e2a0ef2da378a20a2a5d35c53b93.tar.gz astro-700a55549925e2a0ef2da378a20a2a5d35c53b93.tar.zst astro-700a55549925e2a0ef2da378a20a2a5d35c53b93.zip |
Add back support for Astro.clientAddress to Vercel serverless (#6484)
-rw-r--r-- | .changeset/lemon-steaks-care.md | 5 | ||||
-rw-r--r-- | packages/integrations/vercel/src/serverless/request-transform.ts | 9 |
2 files changed, 12 insertions, 2 deletions
diff --git a/.changeset/lemon-steaks-care.md b/.changeset/lemon-steaks-care.md new file mode 100644 index 000000000..848db8fcd --- /dev/null +++ b/.changeset/lemon-steaks-care.md @@ -0,0 +1,5 @@ +--- +'@astrojs/vercel': patch +--- + +Add back support for Astro.clientAddress diff --git a/packages/integrations/vercel/src/serverless/request-transform.ts b/packages/integrations/vercel/src/serverless/request-transform.ts index 6a86ad976..819b8e8fe 100644 --- a/packages/integrations/vercel/src/serverless/request-transform.ts +++ b/packages/integrations/vercel/src/serverless/request-transform.ts @@ -2,6 +2,8 @@ import type { App } from 'astro/app'; import type { IncomingMessage, ServerResponse } from 'node:http'; import { splitCookiesString } from 'set-cookie-parser'; +const clientAddressSymbol = Symbol.for('astro.clientAddress'); + /* Credits to the SvelteKit team https://github.com/sveltejs/kit/blob/8d1ba04825a540324bc003e85f36559a594aadc2/packages/kit/src/exports/node/index.js @@ -99,13 +101,16 @@ export async function getRequest( req: IncomingMessage, bodySizeLimit?: number ): Promise<Request> { - return new Request(base + req.url, { + let headers = req.headers as Record<string, string>; + let request = new Request(base + req.url, { // @ts-expect-error duplex: 'half', method: req.method, - headers: req.headers as Record<string, string>, + headers, body: get_raw_body(req, bodySizeLimit), }); + Reflect.set(request, clientAddressSymbol, headers['x-forwarded-for']); + return request; } export async function setResponse( |