summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/astro/src/core/request.ts13
1 files changed, 10 insertions, 3 deletions
diff --git a/packages/astro/src/core/request.ts b/packages/astro/src/core/request.ts
index 3ace80ba8..624bee879 100644
--- a/packages/astro/src/core/request.ts
+++ b/packages/astro/src/core/request.ts
@@ -70,9 +70,13 @@ export function createRequest({
});
if (isPrerendered) {
- // Warn when accessing headers in prerendered pages
- const _headers = request.headers;
- const headersDesc = Object.getOwnPropertyDescriptor(request, 'headers') || {};
+ // Warn when accessing headers in SSG mode
+ let _headers = request.headers;
+
+ // We need to remove descriptor's value and writable properties because we're adding getters and setters.
+ const { value, writable, ...headersDesc } =
+ Object.getOwnPropertyDescriptor(request, 'headers') || {};
+
Object.defineProperty(request, 'headers', {
...headersDesc,
get() {
@@ -82,6 +86,9 @@ export function createRequest({
);
return _headers;
},
+ set(newHeaders: Headers) {
+ _headers = newHeaders;
+ },
});
} else if (clientAddress) {
// clientAddress is stored to be read by RenderContext, only if the request is for a page that will be on-demand rendered