@@ -375,13 +375,13 @@ function cacheCheck(req, res, next) {
375375
376376 // If cached copy exists, return it to the user.
377377 if ( cachedCopy && cachedCopy . page ) {
378- if ( cachedCopy . headers && Array . isArray ( environment . cache . serverSide . headers ) && environment . cache . serverSide . headers . length > 0 ) {
379- environment . cache . serverSide . headers . forEach ( ( header ) => {
380- if ( cachedCopy . headers [ header . toLowerCase ( ) ] ) {
378+ if ( cachedCopy . headers ) {
379+ Object . keys ( cachedCopy . headers ) . forEach ( ( header ) => {
380+ if ( cachedCopy . headers [ header ] ) {
381381 if ( environment . cache . serverSide . debug ) {
382382 console . log ( `Restore cached ${ header } header` ) ;
383383 }
384- res . setHeader ( header , cachedCopy . headers [ header . toLowerCase ( ) ] ) ;
384+ res . setHeader ( header , cachedCopy . headers [ header ] ) ;
385385 }
386386 } ) ;
387387 }
@@ -462,8 +462,8 @@ function saveToCache(req, page: any) {
462462 // Avoid caching "/reload/[random]" paths (these are hard refreshes after logout)
463463 if ( key . startsWith ( '/reload' ) ) { return ; }
464464
465- // Retrieve response headers
466- const headers = req . res . getHeaders ( ) ;
465+ // Retrieve response headers to save, if any
466+ const headers = retrieveHeaders ( req . res ) ;
467467 // If bot cache is enabled, save it to that cache if it doesn't exist or is expired
468468 // (NOTE: has() will return false if page is expired in cache)
469469 if ( botCacheEnabled ( ) && ! botCache . has ( key ) ) {
@@ -479,6 +479,21 @@ function saveToCache(req, page: any) {
479479 }
480480}
481481
482+ function retrieveHeaders ( response ) {
483+ const headers = Object . create ( { } ) ;
484+ if ( Array . isArray ( environment . cache . serverSide . headers ) && environment . cache . serverSide . headers . length > 0 ) {
485+ environment . cache . serverSide . headers . forEach ( ( header ) => {
486+ if ( response . hasHeader ( header ) ) {
487+ if ( environment . cache . serverSide . debug ) {
488+ console . log ( `Save ${ header } header to cache` ) ;
489+ }
490+ headers [ header ] = response . getHeader ( header ) ;
491+ }
492+ } ) ;
493+ }
494+
495+ return headers ;
496+ }
482497/**
483498 * Whether a user is authenticated or not
484499 */
0 commit comments