@@ -20,6 +20,7 @@ import {
2020import { renderEndpoint } from '../runtime/server/endpoint.js' ;
2121import { renderPage } from '../runtime/server/index.js' ;
2222import {
23+ ASTRO_ORIGIN_HEADER ,
2324 ASTRO_VERSION ,
2425 REROUTE_DIRECTIVE_HEADER ,
2526 REWRITE_DIRECTIVE_HEADER_KEY ,
@@ -36,6 +37,7 @@ import { callMiddleware } from './middleware/callMiddleware.js';
3637import { sequence } from './middleware/index.js' ;
3738import { renderRedirect } from './redirects/render.js' ;
3839import { type Pipeline , Slots , getParams , getProps } from './render/index.js' ;
40+ import { copyRequest , setOriginHeader } from './routing/rewrite.js' ;
3941
4042export const apiContextRoutesSymbol = Symbol . for ( 'context.routes' ) ;
4143
@@ -81,6 +83,7 @@ export class RenderContext {
8183 Pick < RenderContext , 'locals' | 'middleware' | 'status' | 'props' >
8284 > ) : Promise < RenderContext > {
8385 const pipelineMiddleware = await pipeline . getMiddleware ( ) ;
86+ setOriginHeader ( request , pathname )
8487 return new RenderContext (
8588 pipeline ,
8689 locals ,
@@ -153,7 +156,7 @@ export class RenderContext {
153156 if ( payload instanceof Request ) {
154157 this . request = payload ;
155158 } else {
156- this . request = this . # copyRequest( newUrl , this . request ) ;
159+ this . request = copyRequest ( newUrl , this . request ) ;
157160 }
158161 this . isRewriting = true ;
159162 this . url = new URL ( this . request . url ) ;
@@ -253,7 +256,7 @@ export class RenderContext {
253256 if ( reroutePayload instanceof Request ) {
254257 this . request = reroutePayload ;
255258 } else {
256- this . request = this . # copyRequest( newUrl , this . request ) ;
259+ this . request = copyRequest ( newUrl , this . request ) ;
257260 }
258261 this . url = new URL ( this . request . url ) ;
259262 this . cookies = new AstroCookies ( this . request ) ;
@@ -561,33 +564,4 @@ export class RenderContext {
561564 if ( ! i18n ) return ;
562565 return ( this . #preferredLocaleList ??= computePreferredLocaleList ( request , i18n . locales ) ) ;
563566 }
564-
565- /**
566- * Utility function that creates a new `Request` with a new URL from an old `Request`.
567- *
568- * @param newUrl The new `URL`
569- * @param oldRequest The old `Request`
570- */
571- #copyRequest( newUrl : URL , oldRequest : Request ) : Request {
572- if ( oldRequest . bodyUsed ) {
573- throw new AstroError ( AstroErrorData . RewriteWithBodyUsed ) ;
574- }
575- return new Request ( newUrl , {
576- method : oldRequest . method ,
577- headers : oldRequest . headers ,
578- body : oldRequest . body ,
579- referrer : oldRequest . referrer ,
580- referrerPolicy : oldRequest . referrerPolicy ,
581- mode : oldRequest . mode ,
582- credentials : oldRequest . credentials ,
583- cache : oldRequest . cache ,
584- redirect : oldRequest . redirect ,
585- integrity : oldRequest . integrity ,
586- signal : oldRequest . signal ,
587- keepalive : oldRequest . keepalive ,
588- // https://fetch.spec.whatwg.org/#dom-request-duplex
589- // @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
590- duplex : 'half' ,
591- } ) ;
592- }
593567}
0 commit comments