Все они хранятся в $_SERVER
? Даже обычные?
Попробуй это
print_r
($ _SERVER)
Он будет перечислять все в массиве
Каждое поле заголовка запроса HTTP находится в $_SERVER
(кроме Cookie
), и ключ начинается с HTTP_
. Если вы используете Apache, вы также можете попробовать apache_request_headers
.
getallheaders()
можно использовать для получения массива всех HTTP-заголовков.
$headers = getallheaders(); foreach($headers as $key=>$val){ echo $key . ': ' . $val . '<br>'; }
Посмотрите на переменную $ _SERVER, чтобы увидеть, что она содержит. var_dump
страница руководства содержит много полезной информации, но также просто выполняет var_dump
чтобы увидеть, что на самом деле в ней. Многие из записей будут заполнены или не будут заполнены, в зависимости от того, что клиент решает сделать, и странных причуд PHP. Глядя на тот, что находится на моем локальном сервере, есть также записи $ _SERVER ["ALL_HTTP"], которые просто перечисляют их как строку, но, по-видимому, это не стандартно, поскольку он не указан на странице руководства.
Вы можете просто использовать 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; } } ?>
вы можете использовать apache_request_header (); может помочь вам.
$headers = apache_request_headers(); foreach ($headers as $header => $value) { echo "<pre>"; echo "$header : $value"; echo "</pre>"; }