get_headers
get_headers() returns an array with the headers sent by the server in response to a HTTP request.
Parameters
If the optional associative parameter is set to true, get_headers() parses the response and sets the array’s keys.
A valid context resource created with stream_context_create() , or null to use the default context.
Return Values
Returns an indexed or associative array with the headers, or false on failure.
Changelog
Version | Description |
---|---|
8.0.0 | The associative has been changed from int to bool . |
7.1.0 | The context parameter was added. |
Examples
Example #1 get_headers() example
print_r ( get_headers ( $url ));
print_r ( get_headers ( $url , true ));
?>
The above example will output something similar to:
Array ( [0] => HTTP/1.1 200 OK [1] => Date: Sat, 29 May 2004 12:28:13 GMT [2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT [4] => ETag: "3f80f-1b6-3e1cb03b" [5] => Accept-Ranges: bytes [6] => Content-Length: 438 [7] => Connection: close [8] => Content-Type: text/html ) Array ( [0] => HTTP/1.1 200 OK [Date] => Sat, 29 May 2004 12:28:14 GMT [Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux) [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT [ETag] => "3f80f-1b6-3e1cb03b" [Accept-Ranges] => bytes [Content-Length] => 438 [Connection] => close [Content-Type] => text/html )
Example #2 get_headers() using HEAD example
// By default get_headers uses a GET request to fetch the headers. If you
// want to send a HEAD request instead, you can do so using a stream context:
stream_context_set_default (
array(
‘http’ => array(
‘method’ => ‘HEAD’
)
)
);
$headers = get_headers ( ‘http://example.com’ );
?>?php
See Also
getallheaders
This function is an alias for apache_request_headers() . Please read the apache_request_headers() documentation for more information on how this function works.
Parameters
This function has no parameters.
Return Values
An associative array of all the HTTP headers in the current request, or false on failure.
Changelog
Version | Description |
---|---|
7.3.0 | This function became available in the FPM SAPI. |
Examples
Example #1 getallheaders() example
foreach ( getallheaders () as $name => $value ) echo » $name : $value \n» ;
>
See Also
User Contributed Notes 9 notes
it could be useful if you using nginx instead of apache
if (! function_exists ( ‘getallheaders’ ))
<
function getallheaders ()
<
$headers = [];
foreach ( $_SERVER as $name => $value )
<
if ( substr ( $name , 0 , 5 ) == ‘HTTP_’ )
<
$headers [ str_replace ( ‘ ‘ , ‘-‘ , ucwords ( strtolower ( str_replace ( ‘_’ , ‘ ‘ , substr ( $name , 5 )))))] = $value ;
>
>
return $headers ;
>
>
?>
A simple approach to dealing with case insenstive headers (as per RFC2616) is via the built in array_change_key_case() function:
$headers = array_change_key_case(getallheaders(), CASE_LOWER);
There’s a polyfill for this that can be downloaded or installed via composer:
Beware that RFC2616 (HTTP/1.1) defines header fields as case-insensitive entities. Therefore, array keys of getallheaders() should be converted first to lower- or uppercase and processed such.
dont forget to add the content_type and content_lenght if your are uploading file:
function emu_getallheaders () <
foreach ( $_SERVER as $name => $value )
<
if ( substr ( $name , 0 , 5 ) == ‘HTTP_’ )
<
$name = str_replace ( ‘ ‘ , ‘-‘ , ucwords ( strtolower ( str_replace ( ‘_’ , ‘ ‘ , substr ( $name , 5 )))));
$headers [ $name ] = $value ;
> else if ( $name == «CONTENT_TYPE» ) <
$headers [ «Content-Type» ] = $value ;
> else if ( $name == «CONTENT_LENGTH» ) <
$headers [ «Content-Length» ] = $value ;
>
>
return $headers ;
>
?>
chears magno c. heck
apache_request_headers replicement for nginx
if (! function_exists ( ‘apache_request_headers’ )) <
function apache_request_headers () <
foreach( $_SERVER as $key => $value ) <
if ( substr ( $key , 0 , 5 )== «HTTP_» ) <
$key = str_replace ( » » , «-» , ucwords ( strtolower ( str_replace ( «_» , » » , substr ( $key , 5 )))));
$out [ $key ]= $value ;
>else <
$out [ $key ]= $value ;
>
>
return $out ;
>
>
?>
warning, at least on php-fpm 8.2.1 and nginx, getallheaders() will return «Content-Length» and «Content-Type» both containing emptystring, even for requests without any of these 2 headers. you can do something like
retrieve token from header:
function getAuthorizationHeader () $headers = null ;
if (isset( $_SERVER [ ‘Authorization’ ])) $headers = trim ( $_SERVER [ «Authorization» ]);
>
elseif (isset( $_SERVER [ ‘HTTP_AUTHORIZATION’ ])) $headers = trim ( $_SERVER [ «HTTP_AUTHORIZATION» ]);
>
elseif ( function_exists ( ‘apache_request_headers’ )) $requestHeaders = apache_request_headers ();
$requestHeaders = array_combine ( array_map ( ‘ucwords’ , array_keys ( $requestHeaders )), array_values ( $requestHeaders ));
if (isset( $requestHeaders [ ‘Authorization’ ])) $headers = trim ( $requestHeaders [ ‘Authorization’ ]);
>
>
function getBearerToken () $headers = getAuthorizationHeader ();
if (!empty( $headers )) if ( preg_match ( ‘/Bearer\s(\S+)/’ , $headers , $matches )) return $matches [ 1 ];
>
>
Due to the else part.
>else <
$out[$key]=$value;
All server Variables are added to the headers list, and that’s not the desired outcome.
- Apache Functions
- apache_child_terminate
- apache_get_modules
- apache_get_version
- apache_getenv
- apache_lookup_uri
- apache_note
- apache_request_headers
- apache_response_headers
- apache_setenv
- getallheaders
- virtual
get_headers
get_headers() возвращает массив с заголовками из ответа сервера на HTTP-запрос.
Список параметров
Если необязательный параметр format установлен в ненулевое значение, get_headers() разберет ответ сервера и установит ключи для возвращаемого массива.
Возвращаемые значения
Возвращает список или ассоциативный массив с заголовками ответа при нормальном завершении и FALSE , если возникла ошибка.
Список изменений
Версия Описание 5.1.3 Эта функция теперь использует stream context по умолчанию, который может быть установлен или изменен при помощи функции stream_context_set_default() . Примеры
Пример #1 Пример использования get_headers()
print_r ( get_headers ( $url ));
print_r ( get_headers ( $url , 1 ));
?>Результатом выполнения данного примера будет что-то подобное:
Array ( [0] => HTTP/1.1 200 OK [1] => Date: Sat, 29 May 2004 12:28:13 GMT [2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT [4] => ETag: "3f80f-1b6-3e1cb03b" [5] => Accept-Ranges: bytes [6] => Content-Length: 438 [7] => Connection: close [8] => Content-Type: text/html ) Array ( [0] => HTTP/1.1 200 OK [Date] => Sat, 29 May 2004 12:28:14 GMT [Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux) [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT [ETag] => "3f80f-1b6-3e1cb03b" [Accept-Ranges] => bytes [Content-Length] => 438 [Connection] => close [Content-Type] => text/html )
Пример #2 Пример использования запроса HEAD в функции get_headers()
// По умолчанию функция get_headers использует GET-запрос для получения заголовков. Если
// вы хотите вместо него отправить HEAD-запрос, то это можно сделать следующим образом, используя stream context:
stream_context_set_default (
array(
‘http’ => array(
‘method’ => ‘HEAD’
)
)
);
$headers = get_headers ( ‘http://example.com’ );
?>?phpСмотрите также