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