diff --git a/wp-includes/class-wp.php b/wp-includes/class-wp.php index b1b1e2876e..c76030b32c 100644 --- a/wp-includes/class-wp.php +++ b/wp-includes/class-wp.php @@ -378,12 +378,29 @@ class WP { if ( ! empty( $status ) ) status_header( $status ); + + // If Last-Modified is set to false, it should not be sent (no-cache situation). + if ( isset( $headers['Last-Modified'] ) && false === $headers['Last-Modified'] ) { + unset( $headers['Last-Modified'] ); + + // In PHP 5.3+, make sure we are not sending a Last-Modified header. + if ( function_exists( 'header_remove' ) ) { + @header_remove( 'Last-Modified' ); + } else { + // In PHP 5.2, send an empty Last-Modified header, but only as a + // last resort to override a header already sent. #WP23021 + foreach ( headers_list() as $header ) { + if ( 0 === stripos( $header, 'Last-Modified' ) ) { + $headers['Last-Modified'] = ''; + break; + } + } + } + } + foreach( (array) $headers as $name => $field_value ) @header("{$name}: {$field_value}"); - if ( isset( $headers['Last-Modified'] ) && empty( $headers['Last-Modified'] ) && function_exists( 'header_remove' ) ) - @header_remove( 'Last-Modified' ); - if ( $exit_required ) exit(); diff --git a/wp-includes/functions.php b/wp-includes/functions.php index a41d32fe97..f4b4634b5a 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -902,7 +902,6 @@ function status_header( $header ) { function wp_get_nocache_headers() { $headers = array( 'Expires' => 'Wed, 11 Jan 1984 05:00:00 GMT', - 'Last-Modified' => '', 'Cache-Control' => 'no-cache, must-revalidate, max-age=0', 'Pragma' => 'no-cache', ); @@ -910,6 +909,7 @@ function wp_get_nocache_headers() { if ( function_exists('apply_filters') ) { $headers = (array) apply_filters('nocache_headers', $headers); } + $headers['Last-Modified'] = false; return $headers; } @@ -924,10 +924,25 @@ function wp_get_nocache_headers() { */ function nocache_headers() { $headers = wp_get_nocache_headers(); + + unset( $headers['Last-Modified'] ); + + // In PHP 5.3+, make sure we are not sending a Last-Modified header. + if ( function_exists( 'header_remove' ) ) { + @header_remove( 'Last-Modified' ); + } else { + // In PHP 5.2, send an empty Last-Modified header, but only as a + // last resort to override a header already sent. #WP23021 + foreach ( headers_list() as $header ) { + if ( 0 === stripos( $header, 'Last-Modified' ) ) { + $headers['Last-Modified'] = ''; + break; + } + } + } + foreach( $headers as $name => $field_value ) @header("{$name}: {$field_value}"); - if ( empty( $headers['Last-Modified'] ) && function_exists( 'header_remove' ) ) - @header_remove( 'Last-Modified' ); } /**