diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index c12e2748b6190..5d09317b06779 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -37,7 +37,6 @@ import { callMiddleware } from './middleware/callMiddleware.js'; import { sequence } from './middleware/index.js'; import { renderRedirect } from './redirects/render.js'; import { type Pipeline, Slots, getParams, getProps } from './render/index.js'; -import { copyRequest } from './routing/rewrite.js'; export const apiContextRoutesSymbol = Symbol.for('context.routes'); @@ -156,7 +155,7 @@ export class RenderContext { if (payload instanceof Request) { this.request = payload; } else { - this.request = copyRequest(newUrl, this.request); + this.request = new Request(newUrl, this.request); } this.isRewriting = true; this.url = new URL(this.request.url); @@ -256,7 +255,7 @@ export class RenderContext { if (reroutePayload instanceof Request) { this.request = reroutePayload; } else { - this.request = copyRequest(newUrl, this.request); + this.request = new Request(newUrl, this.request); } this.url = new URL(this.request.url); this.cookies = new AstroCookies(this.request); diff --git a/packages/astro/src/core/routing/rewrite.ts b/packages/astro/src/core/routing/rewrite.ts index 9aa009e501d8d..30cefa3386362 100644 --- a/packages/astro/src/core/routing/rewrite.ts +++ b/packages/astro/src/core/routing/rewrite.ts @@ -71,32 +71,3 @@ export function findRouteToRewrite({ } } } - -/** - * Utility function that creates a new `Request` with a new URL from an old `Request`. - * - * @param newUrl The new `URL` - * @param oldRequest The old `Request` - */ -export function copyRequest(newUrl: URL, oldRequest: Request): Request { - if (oldRequest.bodyUsed) { - throw new AstroError(AstroErrorData.RewriteWithBodyUsed); - } - return new Request(newUrl, { - method: oldRequest.method, - headers: oldRequest.headers, - body: oldRequest.body, - referrer: oldRequest.referrer, - referrerPolicy: oldRequest.referrerPolicy, - mode: oldRequest.mode, - credentials: oldRequest.credentials, - cache: oldRequest.cache, - redirect: oldRequest.redirect, - integrity: oldRequest.integrity, - signal: oldRequest.signal, - keepalive: oldRequest.keepalive, - // https://fetch.spec.whatwg.org/#dom-request-duplex - // @ts-expect-error It isn't part of the types, but undici accepts it and it allows to carry over the body to a new request - duplex: 'half', - }); -}