它们都存储在$_SERVER
中吗?即使是定制的?
答案 0 :(得分:37)
试试这个
print_r
($ _ SERVER)
它将列出数组中的所有内容
答案 1 :(得分:23)
您可以使用getallheaders()
获取已发送的所有HTTP标头的数组。
$headers = getallheaders();
foreach($headers as $key=>$val){
echo $key . ': ' . $val . '<br>';
}
答案 2 :(得分:21)
每个HTTP请求标头字段都在$_SERVER
中(Cookie
除外),密钥以HTTP_
开头。如果您使用的是Apache,也可以尝试apache_request_headers
。
答案 3 :(得分:7)
您只需使用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;
}
}
?>
答案 4 :(得分:6)
查看$_SERVER变量以查看其中包含的内容。链接的手册页有很多有用的信息,但只需在其上var_dump
查看其实际内容。许多条目将会或不会被填写,具体取决于客户决定做什么,以及PHP的奇怪怪癖。查看本地服务器上的那个,还有一个$ _SERVER [“ALL_HTTP”]条目,它们只是将它们全部列为字符串,但显然这不是标准的,因为它没有在手册页上列出。 / p>
答案 5 :(得分:0)
你可以使用apache_request_header(); 也许可以帮到你。
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
echo "<pre>";
echo "$header : $value";
echo "</pre>";
}
答案 6 :(得分:0)
正在发生的事情是重写了HTTP标头的名称:
至少这是我在自定义标头和Apache 2.4中观察到的内容。这既不是规范性的,也不是您应检查的内容的完整列表,但它可能会为您提供正确的方向,对我而言,上述任何帮助均无济于事。