Skip to content

Commit

Permalink
Add back support for Astro.clientAddress to Vercel serverless (#6484)
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewp authored Mar 9, 2023
1 parent 1343a64 commit 700a555
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/lemon-steaks-care.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@astrojs/vercel': patch
---

Add back support for Astro.clientAddress
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit 700a555

Please sign in to comment.