diff options
Diffstat (limited to 'packages')
-rw-r--r-- | packages/astro/src/core/request.ts | 13 |
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 |