@@ -90,34 +90,32 @@ function removeStateCookies(cookieHeader: string | null): string {
9090auth . on ( [ 'GET' , 'POST' ] , '/*' , async ( c ) => {
9191 const authInstance = createAuth ( c . env ) ;
9292
93+ // TEMPORARY: Cookie filtering for cross-subdomain migration
94+ // Can be removed after 2025-12-18
9395 if ( c . env . ENVIRONMENT === 'production' ) {
9496 const originalCookies = c . req . raw . headers . get ( 'cookie' ) ;
95- let processedCookies = originalCookies ;
96-
97- // For sign-in routes: remove ALL state cookies so Better Auth creates a fresh one
98- // This prevents state_mismatch when old cookies exist on api.thestack.cl
99- if ( c . req . path . includes ( '/sign-in/' ) ) {
100- processedCookies = removeStateCookies ( originalCookies ) ;
101- } else {
102- // For other routes (callback, get-session, etc): just filter duplicates
103- processedCookies = filterDuplicateCookies ( originalCookies ) ;
104- }
10597
106- // Only create new request if cookies were actually modified
107- if ( processedCookies !== originalCookies ) {
108- // Clone the request first - body is a ReadableStream that can only be read once
109- const clonedRequest = c . req . raw . clone ( ) ;
110- const newHeaders = new Headers ( clonedRequest . headers ) ;
111- newHeaders . set ( 'cookie' , processedCookies || '' ) ;
112-
113- const newRequest = new Request ( clonedRequest . url , {
114- method : clonedRequest . method ,
115- headers : newHeaders ,
116- body : clonedRequest . body ,
117- redirect : clonedRequest . redirect ,
118- } ) ;
119-
120- return authInstance . handler ( newRequest ) ;
98+ // Only process if there are actual cookies
99+ if ( originalCookies ) {
100+ let processedCookies : string ;
101+
102+ // For sign-in routes: remove ALL state cookies so Better Auth creates a fresh one
103+ if ( c . req . path . includes ( '/sign-in/' ) ) {
104+ processedCookies = removeStateCookies ( originalCookies ) ;
105+ } else {
106+ // For other routes (callback, get-session, etc): just filter duplicates
107+ processedCookies = filterDuplicateCookies ( originalCookies ) ;
108+ }
109+
110+ // Only create new request if cookies were actually modified
111+ if ( processedCookies && processedCookies !== originalCookies ) {
112+ const newHeaders = new Headers ( c . req . raw . headers ) ;
113+ newHeaders . set ( 'cookie' , processedCookies ) ;
114+
115+ // Use Request constructor with existing request as base - handles body cloning internally
116+ const newRequest = new Request ( c . req . raw , { headers : newHeaders } ) ;
117+ return authInstance . handler ( newRequest ) ;
118+ }
121119 }
122120 }
123121
0 commit comments