summaryrefslogtreecommitdiff
path: root/packages/integrations/netlify/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/netlify/src')
-rw-r--r--packages/integrations/netlify/src/netlify-edge-functions.ts4
-rw-r--r--packages/integrations/netlify/src/netlify-functions.ts5
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());