summaryrefslogtreecommitdiff
path: root/packages/integrations/netlify/src
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@skypack.dev> 2022-09-28 16:55:27 -0400
committerGravatar GitHub <noreply@github.com> 2022-09-28 16:55:27 -0400
commitd3091f89e92fcfe1ad48daca74055d54b1c853a3 (patch)
tree78a49dcdd19b970ba42fb100ec2f25a39f047d97 /packages/integrations/netlify/src
parentec55745ae5454207fa0405170588d898b49b9a48 (diff)
downloadastro-d3091f89e92fcfe1ad48daca74055d54b1c853a3.tar.gz
astro-d3091f89e92fcfe1ad48daca74055d54b1c853a3.tar.zst
astro-d3091f89e92fcfe1ad48daca74055d54b1c853a3.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.ts8
-rw-r--r--packages/integrations/netlify/src/netlify-functions.ts10
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;
};