PHP 5.6.36 Released

$http_response_header

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

$http_response_headerEncabezados de respuesta HTTP

Descripción

El array $http_response_header es similar a la functión get_headers(). Cuando se hace uso de HTTP wrapper, $http_response_header será poblado con los encabezados de respuesta HTTP. $http_response_header será creada en el ámbito local.

Ejemplos

Ejemplo #1 Ejemplo de $http_response_header

<?php
function get_contents() {
  
file_get_contents("http://example.com");
  
var_dump($http_response_header);
}
get_contents();
var_dump($http_response_header);
?>

El resultado del ejemplo sería algo similar a:

array(9) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
  [2]=>
  string(29) "Server: Apache/2.2.3 (CentOS)"
  [3]=>
  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
  [4]=>
  string(27) "ETag: "280100-1b6-80bfd280""
  [5]=>
  string(20) "Accept-Ranges: bytes"
  [6]=>
  string(19) "Content-Length: 438"
  [7]=>
  string(17) "Connection: close"
  [8]=>
  string(38) "Content-Type: text/html; charset=UTF-8"
}
NULL

add a note add a note

User Contributed Notes 4 notes

up
32
nicolas at toniazzi dot net
4 years ago
Note that the HTTP wrapper has a hard limit of 1024 characters for the header lines.
Any HTTP header received that is longer than this will be ignored and won't appear in $http_response_header.

The cURL extension doesn't have this limit.

http_fopen_wrapper.c: #define HTTP_HEADER_BLOCK_SIZE 1024
up
17
MangaII
2 years ago
parser function to get formatted headers (with response code)

<?php

function parseHeaders( $headers )
{
   
$head = array();
    foreach(
$headers as $k=>$v )
    {
       
$t = explode( ':', $v, 2 );
        if( isset(
$t[1] ) )
           
$head[ trim($t[0]) ] = trim( $t[1] );
        else
        {
           
$head[] = $v;
            if(
preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
               
$head['reponse_code'] = intval($out[1]);
        }
    }
    return
$head;
}

print_r(parseHeaders($http_response_header));

/*
Array
(
    [0] => HTTP/1.1 200 OK
    [reponse_code] => 200
    [Date] => Fri, 01 May 2015 12:56:09 GMT
    [Server] => Apache
    [X-Powered-By] => PHP/5.3.3-7+squeeze18
    [Set-Cookie] => PHPSESSID=ng25jekmlipl1smfscq7copdl3; path=/
    [Expires] => Thu, 19 Nov 1981 08:52:00 GMT
    [Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    [Pragma] => no-cache
    [Vary] => Accept-Encoding
    [Content-Length] => 872
    [Connection] => close
    [Content-Type] => text/html
)
*/

?>
up
1
doekia at gmail dot com
10 months ago
Bear in mind this special variable is somehow protected and not populated in some situation when the peer server close the connection early on (ssl reset)
=> Undefined variable: http_response_header

A code like this one:
$response = @file_get_contents($url);
empty($http_response_header) && $http_response_header = array('HTTP/1.1 400 Bad request');

Will return a cryptic error message:
Fatal error: Call to undefined function  array() on line 2

--
Should you want to cope with this situation:
$hdrs = array('HTTP/1.1 400 Bad request');
!empty($htp_response_header) && $hdrs = $http_response_headers;

Now use $hdrs in place of $http_response_header
up
1
jaraco at jaraco dot com
2 months ago
If an HTTP Redirect is encountered, the headers will contain the response line and headers for all requests encountered. Consider this example:

<?php
file_get_contents
("https://httpbin.org/redirect-to?url=https%3A%2F%2Fhttpbin.org%2F");
var_dump($http_response_header);
?>

Produces the following:

array(23) {
  [0]=>
  string(18) "HTTP/1.1 302 FOUND"
  [1]=>
  string(17) "Connection: close"
  [2]=>
  string(22) "Server: meinheld/0.6.1"
  [3]=>
  string(35) "Date: Tue, 06 Feb 2018 11:21:21 GMT"
  [4]=>
  string(38) "Content-Type: text/html; charset=utf-8"
  [5]=>
  string(17) "Content-Length: 0"
  [6]=>
  string(30) "Location: https://httpbin.org/"
  [7]=>
  string(30) "Access-Control-Allow-Origin: *"
  [8]=>
  string(38) "Access-Control-Allow-Credentials: true"
  [9]=>
  string(19) "X-Powered-By: Flask"
  [10]=>
  string(34) "X-Processed-Time: 0.00107908248901"
  [11]=>
  string(14) "Via: 1.1 vegur"
  [12]=>
  string(15) "HTTP/1.1 200 OK"
  [13]=>
  string(17) "Connection: close"
  [14]=>
  string(22) "Server: meinheld/0.6.1"
  [15]=>
  string(35) "Date: Tue, 06 Feb 2018 11:21:21 GMT"
  [16]=>
  string(38) "Content-Type: text/html; charset=utf-8"
  [17]=>
  string(21) "Content-Length: 13011"
  [18]=>
  string(30) "Access-Control-Allow-Origin: *"
  [19]=>
  string(38) "Access-Control-Allow-Credentials: true"
  [20]=>
  string(19) "X-Powered-By: Flask"
  [21]=>
  string(34) "X-Processed-Time: 0.00848388671875"
  [22]=>
  string(14) "Via: 1.1 vegur"
}
To Top