Print all header php

headers_list

headers_list() will return a list of headers to be sent to the browser / client. To determine whether or not these headers have been sent yet, use headers_sent() .

Parameters

This function has no parameters.

Return Values

Returns a numerically indexed array of headers.

Examples

Example #1 Example using headers_list()

/* setcookie() will add a response header on its own */
setcookie ( ‘foo’ , ‘bar’ );

/* Define a custom response header
This will be ignored by most clients */
header ( «Example-Test: foo» );

/* Specify plain text content in our response */
header ( ‘Content-Type: text/plain; charset=UTF-8’ );

/* What headers are going to be sent? */
var_dump ( headers_list ());

The above example will output something similar to:

array(3) < [0]=>string(19) "Set-Cookie: foo=bar" [1]=> string(17) "Example-Test: foo" [2]=> string(39) "Content-Type: text/plain; charset=UTF-8" >

Notes

Note:

Headers will only be accessible and output when a SAPI that supports them is in use.

See Also

  • headers_sent() — Checks if or where headers have been sent
  • header() — Send a raw HTTP header
  • setcookie() — Send a cookie
  • apache_response_headers() — Fetch all HTTP response headers
  • http_response_code() — Get or Set the HTTP response code

User Contributed Notes 3 notes

This function won’t work for when you’re running PHP from the command line. If will always return an empty array. This can be an issue when testing your project using PHPUnit or Codeception.

To solve this, install the xdebug extension and use `xdebug_get_headers` when on the cli.

$headers = php_sapi_name () === ‘cli’ ? xdebug_get_headers () : headers_list ();
?>

note that it does not return the status header

header ( ‘HTTP/1.1 301 Moved Permanently’ , true , 301 );

header ( ‘foo: bar’ );
header ( ‘a: b’ );
header ( ‘colon less example’ );

print_r ( headers_list ());
?>

Array
(
[0] => X-Powered-By: PHP/5.4.7
[1] => foo: bar
[2] => a: b
)

Function to check if a particular header has been added to the list:

function header_sent ( $header ) $headers = headers_list ();
$header = trim ( $header , ‘: ‘ );
$result = false ;

foreach ( $headers as $hdr ) if ( stripos ( $hdr , $header ) !== false ) $result = true ;
>
>

  • Network Functions
    • checkdnsrr
    • closelog
    • dns_​check_​record
    • dns_​get_​mx
    • dns_​get_​record
    • fsockopen
    • gethostbyaddr
    • gethostbyname
    • gethostbynamel
    • gethostname
    • getmxrr
    • getprotobyname
    • getprotobynumber
    • getservbyname
    • getservbyport
    • header_​register_​callback
    • header_​remove
    • header
    • headers_​list
    • headers_​sent
    • http_​response_​code
    • inet_​ntop
    • inet_​pton
    • ip2long
    • long2ip
    • net_​get_​interfaces
    • openlog
    • pfsockopen
    • setcookie
    • setrawcookie
    • socket_​get_​status
    • socket_​set_​blocking
    • socket_​set_​timeout
    • syslog

    Источник

    How to get HTTP headers in PHP

    You have already know that generally you send external API request, you also need to send Content-Type in header. Some API only accepts request if you sent proper headers. When the API call succeed, the server also send headers in response.

    Headers are the additional data which are send with the request and response. Generally the header data contains information about data-type, request source and authentication credentials etc.

    You may want to get information about headers and validate request. PHP gives you several ways to get headers from request and response.

    In this article, we will discuss few ways how to get headers from request and response sent by server.

    CURL request:

    The first and widely used to get headers from request is using PHP curl. This method also used to get headers from all type of request.

    Here is the below example how you can get headers array:

    This will return header array in response:

    Array
    (
    [0] => HTTP/2 301
    [1] => location: https://www.google.com/
    [2] => content-type: text/html; charset=UTF-8
    [3] => date: Tue, 10 Aug 2021 11:45:33 GMT
    [4] => expires: Thu, 09 Sep 2021 11:45:33 GMT
    [5] => cache-control: public, max-age=2592000
    [6] => server: gws
    [7] => content-length: 220
    [8] => x-xss-protection: 0
    [9] => x-frame-options: SAMEORIGIN
    [10] => alt-svc: h3=»:443″; ma=2592000,h3-29=»:443″; ma=2592000,h3-T051=»:443″; ma=2592000,h3-Q050=»:443″; ma=2592000,h3-Q046=»:443″; ma=2592000,h3-Q043=»:443″; ma=2592000,quic=»:443″; ma=2592000; v=»46,43″
    [11] =>
    [12] =>
    )

    You can convert headers in key:value format using below loop.

    $data = []; foreach ($headers as $value) < $parts = explode(':', $value); if (count($parts) === 2) < $data[trim($parts[0])] = trim($parts[1]); >> print_r($data);

    Array
    (
    [content-type] => text/html; charset=UTF-8
    [cache-control] => public, max-age=2592000
    [server] => gws
    [content-length] => 220
    [x-xss-protection] => 0
    [x-frame-options] => SAMEORIGIN
    )

    apache_request_headers() function

    apache_request_headers() function returns all headers for current request. The function returns associative array of all the HTTP headers in the current request. It returns false on failure.

    This will return response for my localhost web request:

    Array
    (
    [Host] => localhost
    [Connection] => keep-alive
    [Cache-Control] => max-age=0
    [sec-ch-ua] => «Chromium»;v=»92″, » Not A;Brand»;v=»99″, «Google Chrome»;v=»92″
    [sec-ch-ua-mobile] => ?0
    [Upgrade-Insecure-Requests] => 1
    [User-Agent] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
    [Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    [Sec-Fetch-Site] => none
    [Sec-Fetch-Mode] => navigate
    [Sec-Fetch-User] => ?1
    [Sec-Fetch-Dest] => document
    [Accept-Encoding] => gzip, deflate, br
    [Accept-Language] => en-GB,en-US;q=0.9,en;q=0.8
    )

    get_headers() function

    get_headers() function returns all response headers sent by the server.

    Below example shows the response headers for Google homepage:

    It will return the array of headers sent by Google server:

    Array
    (
    [0] => HTTP/1.0 200 OK
    [1] => Date: Tue, 10 Aug 2021 12:01:20 GMT
    [2] => Expires: -1
    [3] => Cache-Control: private, max-age=0
    [4] => Content-Type: text/html; charset=ISO-8859-1
    [5] => P3P: CP=»This is not a P3P policy! See g.co/p3phelp for more info.»
    [6] => Server: gws
    [7] => X-XSS-Protection: 0
    [8] => X-Frame-Options: SAMEORIGIN
    [9] => Set-Cookie: 1P_JAR=2021-08-10-12; expires=Thu, 09-Sep-2021 12:01:20 GMT; path=/; domain=.google.com; Secure
    [10] => Set-Cookie: NID=221=SEbyqqBM0d_cZ4I1qqC6o7sLHRQOpWg7qRdWMat3qN2ROYtC_XgyHQYfLZeMoKH9EiSNh_mglxQBtpJPkQnRiaFiEdvVn0MUypVN6VshIN16-OOaMU3JFZ3leCaioetNW0c5H8YfrUst2dIlBud4dRzoWA-YmnhjnsPbeOD_f9Q; expires=Wed, 09-Feb-2022 12:01:20 GMT; path=/; domain=.google.com; HttpOnly
    [11] => Alt-Svc: h3=»:443″; ma=2592000,h3-29=»:443″; ma=2592000,h3-T051=»:443″; ma=2592000,h3-Q050=»:443″; ma=2592000,h3-Q046=»:443″; ma=2592000,h3-Q043=»:443″; ma=2592000,quic=»:443″; ma=2592000; v=»46,43″
    [12] => Accept-Ranges: none
    [13] => Vary: Accept-Encoding
    )

    I hope you liked the article and help in your web development.

    Источник

    headers_list

    headers_list() will return a list of headers to be sent to the browser / client. To determine whether or not these headers have been sent yet, use headers_sent() .

    Parameters

    This function has no parameters.

    Return Values

    Returns a numerically indexed array of headers.

    Examples

    Example #1 Example using headers_list()

    /* setcookie() will add a response header on its own */
    setcookie ( ‘foo’ , ‘bar’ );

    /* Define a custom response header
    This will be ignored by most clients */
    header ( «Example-Test: foo» );

    /* Specify plain text content in our response */
    header ( ‘Content-Type: text/plain; charset=UTF-8’ );

    /* What headers are going to be sent? */
    var_dump ( headers_list ());

    The above example will output something similar to:

    array(3) < [0]=>string(19) "Set-Cookie: foo=bar" [1]=> string(17) "Example-Test: foo" [2]=> string(39) "Content-Type: text/plain; charset=UTF-8" >

    Notes

    Note:

    Headers will only be accessible and output when a SAPI that supports them is in use.

    See Also

    • headers_sent() — Checks if or where headers have been sent
    • header() — Send a raw HTTP header
    • setcookie() — Send a cookie
    • apache_response_headers() — Fetch all HTTP response headers
    • http_response_code() — Get or Set the HTTP response code

    User Contributed Notes 3 notes

    This function won’t work for when you’re running PHP from the command line. If will always return an empty array. This can be an issue when testing your project using PHPUnit or Codeception.

    To solve this, install the xdebug extension and use `xdebug_get_headers` when on the cli.

    $headers = php_sapi_name () === ‘cli’ ? xdebug_get_headers () : headers_list ();
    ?>

    note that it does not return the status header

    header ( ‘HTTP/1.1 301 Moved Permanently’ , true , 301 );

    header ( ‘foo: bar’ );
    header ( ‘a: b’ );
    header ( ‘colon less example’ );

    print_r ( headers_list ());
    ?>

    Array
    (
    [0] => X-Powered-By: PHP/5.4.7
    [1] => foo: bar
    [2] => a: b
    )

    Function to check if a particular header has been added to the list:

    function header_sent ( $header ) $headers = headers_list ();
    $header = trim ( $header , ‘: ‘ );
    $result = false ;

    foreach ( $headers as $hdr ) if ( stripos ( $hdr , $header ) !== false ) $result = true ;
    >
    >

Оцените статью