diff options
| author | 2022-09-28 16:55:27 -0400 | |
|---|---|---|
| committer | 2022-09-28 16:55:27 -0400 | |
| commit | ba057fb970f9b97f2813431f0bd84875bfb465d8 (patch) | |
| tree | 396f2434444e638ddb7bd9d385705f09e299099e /packages/integrations/netlify/src | |
| parent | 42aef7ecb9ca612fbca28bf1b37de853379b95c1 (diff) | |
| download | astro-ba057fb970f9b97f2813431f0bd84875bfb465d8.tar.gz astro-ba057fb970f9b97f2813431f0bd84875bfb465d8.tar.zst astro-ba057fb970f9b97f2813431f0bd84875bfb465d8.zip | |
Astro.cookies implementation (#4876)
* Astro.cookies implementation
* Remove unused var
* Fix build
* Add a changesetp
* Remove spoken-word expires
Diffstat (limited to 'packages/integrations/netlify/src')
| -rw-r--r-- | packages/integrations/netlify/src/netlify-edge-functions.ts | 8 | ||||
| -rw-r--r-- | packages/integrations/netlify/src/netlify-functions.ts | 10 |
2 files changed, 17 insertions, 1 deletions
diff --git a/packages/integrations/netlify/src/netlify-edge-functions.ts b/packages/integrations/netlify/src/netlify-edge-functions.ts index a2c883585..c788b5f67 100644 --- a/packages/integrations/netlify/src/netlify-edge-functions.ts +++ b/packages/integrations/netlify/src/netlify-edge-functions.ts @@ -17,7 +17,13 @@ export function createExports(manifest: SSRManifest) { if (app.match(request)) { const ip = request.headers.get('x-nf-client-connection-ip'); Reflect.set(request, clientAddressSymbol, ip); - return app.render(request); + const response = await app.render(request); + if(app.setCookieHeaders) { + for(const setCookieHeader of app.setCookieHeaders(response)) { + response.headers.append('Set-Cookie', setCookieHeader); + } + } + return response; } return new Response(null, { diff --git a/packages/integrations/netlify/src/netlify-functions.ts b/packages/integrations/netlify/src/netlify-functions.ts index 94c9b6eee..7945b4687 100644 --- a/packages/integrations/netlify/src/netlify-functions.ts +++ b/packages/integrations/netlify/src/netlify-functions.ts @@ -120,6 +120,16 @@ export const createExports = (manifest: SSRManifest, args: Args) => { } } + // Apply cookies set via Astro.cookies.set/delete + if(app.setCookieHeaders) { + const setCookieHeaders = Array.from(app.setCookieHeaders(response)); + fnResponse.multiValueHeaders = fnResponse.multiValueHeaders || {}; + if(!fnResponse.multiValueHeaders['set-cookie']) { + fnResponse.multiValueHeaders['set-cookie'] = []; + } + fnResponse.multiValueHeaders['set-cookie'].push(...setCookieHeaders); + } + return fnResponse; }; |
