diff options
Diffstat (limited to 'packages/integrations/netlify/src')
-rw-r--r-- | packages/integrations/netlify/src/netlify-edge-functions.ts | 4 | ||||
-rw-r--r-- | packages/integrations/netlify/src/netlify-functions.ts | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/packages/integrations/netlify/src/netlify-edge-functions.ts b/packages/integrations/netlify/src/netlify-edge-functions.ts index 0d2974c61..a2c883585 100644 --- a/packages/integrations/netlify/src/netlify-edge-functions.ts +++ b/packages/integrations/netlify/src/netlify-edge-functions.ts @@ -1,6 +1,8 @@ import type { SSRManifest } from 'astro'; import { App } from 'astro/app'; +const clientAddressSymbol = Symbol.for('astro.clientAddress'); + export function createExports(manifest: SSRManifest) { const app = new App(manifest); @@ -13,6 +15,8 @@ export function createExports(manifest: SSRManifest) { return; } if (app.match(request)) { + const ip = request.headers.get('x-nf-client-connection-ip'); + Reflect.set(request, clientAddressSymbol, ip); return app.render(request); } diff --git a/packages/integrations/netlify/src/netlify-functions.ts b/packages/integrations/netlify/src/netlify-functions.ts index d342afc4c..0363fb803 100644 --- a/packages/integrations/netlify/src/netlify-functions.ts +++ b/packages/integrations/netlify/src/netlify-functions.ts @@ -15,6 +15,8 @@ function parseContentType(header?: string) { return header?.split(';')[0] ?? ''; } +const clientAddressSymbol = Symbol.for('astro.clientAddress'); + export const createExports = (manifest: SSRManifest, args: Args) => { const app = new App(manifest); @@ -71,6 +73,9 @@ export const createExports = (manifest: SSRManifest, args: Args) => { }; } + const ip = headers['x-nf-client-connection-ip']; + Reflect.set(request, clientAddressSymbol, ip); + const response: Response = await app.render(request); const responseHeaders = Object.fromEntries(response.headers.entries()); |