@@ -242,15 +242,21 @@ function shouldRewriteProxyResponse(headers: IncomingHttpHeaders): boolean {
242242 && ( contentType . startsWith ( "text/" ) || / (?: ^ | \/ ) (?: [ ^ ; ] + \+ ) ? (?: j s o n | j a v a s c r i p t | x m l ) (?: ; | $ ) / . test ( contentType ) )
243243}
244244
245- function rewritePreviewOrigin ( body : string , targetOrigin : string , proxyOrigin : string ) : string {
245+ function rewritePreviewBodyOrigin ( body : string , targetOrigin : string , proxyOrigin : string ) : string {
246246 return body
247+ . replaceAll ( `${ targetOrigin } /wp-json` , `${ proxyOrigin } /wp-json` )
248+ . replaceAll ( `${ targetOrigin . replaceAll ( "/" , "\\/" ) } \\/wp-json` , `${ proxyOrigin . replaceAll ( "/" , "\\/" ) } \\/wp-json` )
249+ }
250+
251+ function rewritePreviewHeaderOrigin ( value : string , targetOrigin : string , proxyOrigin : string ) : string {
252+ return value
247253 . replaceAll ( targetOrigin , proxyOrigin )
248254 . replaceAll ( targetOrigin . replaceAll ( "/" , "\\/" ) , proxyOrigin . replaceAll ( "/" , "\\/" ) )
249255}
250256
251257function previewOriginRewriteStream ( targetOrigin : string , proxyOrigin : string ) : Transform {
252258 const decoder = new StringDecoder ( "utf8" )
253- const patterns = [ targetOrigin , targetOrigin . replaceAll ( "/" , "\\/" ) ]
259+ const patterns = [ ` ${ targetOrigin } /wp-json` , ` ${ targetOrigin . replaceAll ( "/" , "\\/" ) } \\/wp-json` ]
254260 const retainedCharacters = Math . max ( ...patterns . map ( ( pattern ) => pattern . length ) ) - 1
255261 let pending = ""
256262
@@ -264,10 +270,10 @@ function previewOriginRewriteStream(targetOrigin: string, proxyOrigin: string):
264270 }
265271 }
266272 pending = text . slice ( splitAt )
267- callback ( null , rewritePreviewOrigin ( text . slice ( 0 , splitAt ) , targetOrigin , proxyOrigin ) )
273+ callback ( null , rewritePreviewBodyOrigin ( text . slice ( 0 , splitAt ) , targetOrigin , proxyOrigin ) )
268274 } ,
269275 flush ( callback ) {
270- callback ( null , rewritePreviewOrigin ( pending + decoder . end ( ) , targetOrigin , proxyOrigin ) )
276+ callback ( null , rewritePreviewBodyOrigin ( pending + decoder . end ( ) , targetOrigin , proxyOrigin ) )
271277 } ,
272278 } )
273279}
@@ -345,8 +351,8 @@ function proxyResponseHeaders(headers: IncomingHttpHeaders, targetOrigin?: strin
345351
346352 if ( targetOrigin && proxyOrigin ) {
347353 for ( const [ name , value ] of Object . entries ( forwarded ) ) {
348- if ( typeof value === "string" ) forwarded [ name ] = rewritePreviewOrigin ( value , targetOrigin , proxyOrigin )
349- else if ( Array . isArray ( value ) ) forwarded [ name ] = value . map ( ( item ) => rewritePreviewOrigin ( item , targetOrigin , proxyOrigin ) )
354+ if ( typeof value === "string" ) forwarded [ name ] = rewritePreviewHeaderOrigin ( value , targetOrigin , proxyOrigin )
355+ else if ( Array . isArray ( value ) ) forwarded [ name ] = value . map ( ( item ) => rewritePreviewHeaderOrigin ( item , targetOrigin , proxyOrigin ) )
350356 }
351357 }
352358
0 commit comments