getallheaders

(PHP 4, PHP 5, PHP 7, PHP 8)

getallheadersRecupera todas las cabeceras de petición HTTP

Descripción

getallheaders(): array

Recupera todas las cabeceras HTTP de la petición actual.

Esta función es un alias de apache_request_headers(). Por favor lea la documentación de apache_request_headers() para obtener más información sobre cómo trabaja esta función.

Valores devueltos

Un array asociativo de todas las cabeceras HTTP en la petición actual, o false en caso de fallo.

Historial de cambios

Versión Descripción
7.3.0 Esta función se hizo disponible en el SAPI de FPM.

Ejemplos

Ejemplo #1 Ejemplo de getallheaders()

<?php

foreach (getallheaders() as $nombre => $valor) {
echo
"$nombre: $valor\n";
}

?>

Ver también

add a note

User Contributed Notes 8 notes

up
139
joyview at gmail dot com
17 years ago
it could be useful if you using nginx instead of apache

<?php
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;
    }
}
?>
up
35
Anonymous
9 years ago
There's a polyfill for this that can be downloaded or installed via composer:https://github.com/ralouphie/getallheaders
up
16
michaelmcandrew at thirdsectordesign dot org
5 years ago
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);
up
28
lorro at lorro dot hu
20 years ago
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.
up
4
acidfilez at gmail dot com
14 years ago
dont forget to add the content_type and content_lenght if your are uploading file:

<?php
  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
up
0
hans at loltek dot net
3 months ago
if you want a specific header,<?phpfunction get_response_header(string $header_name = 'Content-Type', bool $trim = true): ?string{    $header_name .= ':';    $list = headers_list();    $len = strlen($header_name);    foreach ($list as $header) {        if (strncasecmp($header, $header_name, $len) === 0) {            $ret = substr($header, $len);            if ($trim) {                $ret = trim($ret);            }            return $ret;        }    }    return null;}?>
up
0
majksner at gmail dot com
14 years ago
apache_request_headers replicement for nginx

<?php
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; 
        } 
}
?>
up
-1
divinity76 at gmail dot com
2 years ago
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<?php$request_headers = getallheaders();if(($request_headers["Content-Type"] ?? null) === "" && ($request_headers["Content-Length"] ?? null) === "") {    // probably a getallheaders() bug, not actual request headers.    unset($request_headers["Content-Type"], $request_headers["Content-Length"]);}?>- might be a bug in nginx rather than php-fpm, i don't know. anyway a real request wouldn't leave them at emptystring
To Top