@@ -338,6 +338,7 @@ export const createResponseHandler = (handler: CreateHandlerParameter) => {
338338 return ( response : Response , set : Context [ 'set' ] , request ?: Request ) => {
339339 let isCookieSet = false
340340
341+ // Merge headers: Response headers take precedence, set.headers fill in non-conflicting ones
341342 if ( set . headers instanceof Headers )
342343 for ( const key of set . headers . keys ( ) ) {
343344 if ( key === 'set-cookie' ) {
@@ -347,14 +348,21 @@ export const createResponseHandler = (handler: CreateHandlerParameter) => {
347348
348349 for ( const cookie of set . headers . getSetCookie ( ) )
349350 response . headers . append ( 'set-cookie' , cookie )
350- } else response . headers . append ( key , set . headers ?. get ( key ) ?? '' )
351+ } else if ( ! response . headers . has ( key ) )
352+ response . headers . set ( key , set . headers ?. get ( key ) ?? '' )
351353 }
352354 else
353355 for ( const key in set . headers )
354- ( response as Response ) . headers . append (
355- key ,
356- set . headers [ key ] as any
357- )
356+ if ( key === 'set-cookie' )
357+ ( response as Response ) . headers . append (
358+ key ,
359+ set . headers [ key ] as any
360+ )
361+ else if ( ! response . headers . has ( key ) )
362+ ( response as Response ) . headers . set (
363+ key ,
364+ set . headers [ key ] as any
365+ )
358366
359367 const status = set . status ?? 200
360368
0 commit comments