Как я могу заставить PHP отображать заголовки, полученные из браузера? - PullRequest
32 голосов
/ 10 сентября 2009

Все они хранятся в $_SERVER? Даже нестандартные?

Ответы [ 6 ]

37 голосов
/ 10 сентября 2009

Попробуйте это

print_r ($ _ SERVER)

Будет перечислено все в массиве

23 голосов
/ 08 сентября 2014

вы можете использовать getallheaders(), чтобы получить массив всех отправленных заголовков HTTP.

$headers =  getallheaders();
foreach($headers as $key=>$val){
  echo $key . ': ' . $val . '<br>';
}
21 голосов
/ 10 сентября 2009

Каждое поле заголовка HTTP-запроса находится в $_SERVER (кроме Cookie), а ключ начинается с HTTP_. Если вы используете Apache, вы также можете попробовать apache_request_headers.

7 голосов
/ 18 января 2016

Вы можете просто использовать apache_request_headers() или его псевдоним getallheaders().

Использование: echo json_encode(getallheaders());

Если вышеуказанная функция не существует (старый PHP или nginx), вы можете использовать ее в качестве запасного варианта:

<?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; 
    } 
}
?>
6 голосов
/ 10 сентября 2009

Посмотрите на переменную $ _ SERVER , чтобы увидеть, что она содержит. Связанная страница руководства содержит много полезной информации, но также просто наберите var_dump, чтобы увидеть, что на самом деле есть. Многие записи будут или не будут заполнены, в зависимости от того, что клиент решит сделать, и странных особенностей PHP. Если посмотреть на запись на моем локальном сервере, есть также записи $ _SERVER ["ALL_HTTP"], которые просто перечисляют их все в виде строки, но, очевидно, это не является стандартным, поскольку его нет на странице руководства. 1004 *

0 голосов
/ 30 августа 2016

вы можете использовать apache_request_header (); может быть, поможет вам.

<code>$headers = apache_request_headers();        
foreach ($headers as $header => $value) {
 echo "<pre>";
 echo "$header : $value";
 echo "
"; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...