Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 23244)
+++ wp-includes/functions.php	(working copy)
@@ -783,6 +783,43 @@
 }
 
 /**
+ * Queue or unqueue HTTP headers
+ * Error suppression in use. Fails silently when headers already sent.
+ *
+ * @since 3.5.1
+ *
+ * @param string $name Header field name or entire header
+ * @param string|bool $value Optional header value.
+ *        If $value is not set then $name is sent verbatim.
+ *        If $value is false then $name is removed or sent blank.
+ */
+function wp_header( $name, $value = null ) {
+	if ( $value === null ) {
+		@header( $name );
+	} elseif ( $value === false ) {
+		// Remove the header
+		if ( function_exists( 'header_remove' ) ) {
+			// header_remove was added in PHP 5.3
+			@header_remove( $name );
+		} else {
+			// Prior to PHP 5.3, calling header("Name:") is the only way to empty a header.
+			// However, sometimes servers do crazy things like convert an empty Last-Modified to 1970.
+			// So we don't want to send empty headers unless we must do so to override a previously set header.
+			$lname = strtolower( $name );
+			$len = strlen( $lname );
+			foreach ( headers_list() as $header ) {
+				if ( strtolower( substr( $header, 0, $len ) ) == $lname ) {
+					@header( "{$name}:" );
+					break;
+				}
+			}
+		}
+	} else {
+		@header( "$name: $value" );
+	}
+}
+
+/**
  * Retrieve the description for the HTTP status.
  *
  * @since 2.3.0
