从 PHP 中的当前请求中获取 http 标头

2022-08-30 11:10:19

是否可以使用 PHP 获取当前请求的 http 标头?我不是使用Apache作为Web服务器,而是使用nginx。

我尝试使用,但我得到.getallheaders()Call to undefined function getallheaders()


答案 1

取自文档有人写了一条评论...

if (!function_exists('getallheaders')) 
{ 
    function getallheaders() 
    { 
       $headers = array (); 
       foreach ($_SERVER as $name => $value) 
       { 
           if (substr($name, 0, 5) == 'HTTP_') 
           { 
               $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 
           } 
       } 
       return $headers; 
    } 
} 

答案 2

改进了他的功能@Layke,使其使用起来更安全:

if (!function_exists('getallheaders'))  {
    function getallheaders()
    {
        if (!is_array($_SERVER)) {
            return array();
        }

        $headers = array();
        foreach ($_SERVER as $name => $value) {
            if (substr($name, 0, 5) == 'HTTP_') {
                $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
            }
        }
        return $headers;
    }
}

(希望我能把这个作为评论添加到他的答案中,但仍然建立在那种声誉之上 - 这是我的第一个回复之一)


推荐