略微加速

PHP官方手册 - 互联网笔记

PHP - Manual: getallheaders

2024-04-26

getallheaders

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

getallheaders获取全部 HTTP 请求头信息

说明

getallheaders(): array

获取当前请求的所有请求头信息。

此函数是 apache_request_headers()的别名。 请阅读 apache_request_headers() 文档获得更多信息。

参数

此函数没有参数。

返回值

包含当前请求所有头信息的数组,失败返回 false

更新日志

版本 说明
7.3.0 该函数可以在 FPM SAPI 中使用。

范例

示例 #1 getallheaders() 示例

<?php

foreach (getallheaders() as $name => $value) {
    echo 
"$name$value\n";
}

?>

参见

add a noteadd a note

User Contributed Notes 8 notes

up
137
joyview at gmail dot com
13 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
11
michaelmcandrew at thirdsectordesign dot org
2 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
37
Anonymous
6 years ago
There's a polyfill for this that can be downloaded or installed via composer:

https://github.com/ralouphie/getallheaders
up
30
lorro at lorro dot hu
17 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
2
majksner at gmail dot com
11 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
2
acidfilez at gmail dot com
11 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
Dimitri
37 minutes ago
retrieve token from header:

<?php
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']);
        }
    }

    return
$headers;
}

function
getBearerToken() {
   
$headers = getAuthorizationHeader();

    if (!empty(
$headers)) {
        if (
preg_match('/Bearer\s(\S+)/', $headers, $matches)) {
            return
$matches[1];
        }
    }

    return
null;
}

echo
getBearerToken();
?>
up
-8
andersmyren at hotmail dot com
2 years ago
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.

官方地址:https://www.php.net/manual/en/function.getallheaders.php

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3