summaryrefslogtreecommitdiff
path: root/packages/integrations/netlify/src/netlify-edge-functions.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/netlify/src/netlify-edge-functions.ts')
-rw-r--r--packages/integrations/netlify/src/netlify-edge-functions.ts7
1 files changed, 5 insertions, 2 deletions
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) {