diff options
Diffstat (limited to 'packages/integrations/netlify')
-rw-r--r-- | packages/integrations/netlify/package.json | 1 | ||||
-rw-r--r-- | packages/integrations/netlify/src/netlify-edge-functions.ts | 7 |
2 files changed, 6 insertions, 2 deletions
diff --git a/packages/integrations/netlify/package.json b/packages/integrations/netlify/package.json index 33fe2e73e..dfe8385a1 100644 --- a/packages/integrations/netlify/package.json +++ b/packages/integrations/netlify/package.json @@ -42,6 +42,7 @@ "astro": "workspace:^2.2.0" }, "devDependencies": { + "@netlify/edge-functions": "^2.0.0", "@netlify/edge-handler-types": "^0.34.1", "@types/node": "^14.18.20", "astro": "workspace:*", diff --git a/packages/integrations/netlify/src/netlify-edge-functions.ts b/packages/integrations/netlify/src/netlify-edge-functions.ts index f4766b276..8011e2b1b 100644 --- a/packages/integrations/netlify/src/netlify-edge-functions.ts +++ b/packages/integrations/netlify/src/netlify-edge-functions.ts @@ -1,4 +1,5 @@ import type { SSRManifest } from 'astro'; +import type { Context } from '@netlify/edge-functions'; import { App } from 'astro/app'; const clientAddressSymbol = Symbol.for('astro.clientAddress'); @@ -6,7 +7,7 @@ const clientAddressSymbol = Symbol.for('astro.clientAddress'); export function createExports(manifest: SSRManifest) { const app = new App(manifest); - const handler = async (request: Request): Promise<Response | void> => { + const handler = async (request: Request, context: Context): Promise<Response | void> => { const url = new URL(request.url); // If this matches a static asset, just return and Netlify will forward it @@ -15,7 +16,9 @@ export function createExports(manifest: SSRManifest) { return; } if (app.match(request)) { - const ip = request.headers.get('x-nf-client-connection-ip'); + const ip = request.headers.get('x-nf-client-connection-ip') + || context?.ip + || (context as any)?.remoteAddr?.hostname; Reflect.set(request, clientAddressSymbol, ip); const response = await app.render(request); if (app.setCookieHeaders) { |