getallheaders()
(PHP 4, PHP 5, PHP 7)
获取全部 HTTP 请求头信息
说明
getallheaders(void): array
获取当前请求的所有请求头信息。
此函数是apache_request_headers()的别名。请阅读apache_request_headers()文档获得更多信息。
返回值
包含当前请求所有头信息的数组,失败返回FALSE
。
更新日志
版本 | 说明 |
---|---|
5.5.7 | 此函数可用于 CLI server。 |
5.4.0 | 此函数可用于 FastCGI。此前仅在PHP以 Apache 模块方式运行时支持。 |
4.3.3 | 从PHP 4.3.3 起,也可在 Netscape/iPlanet/SunONE Web 服务器的NSAPI 服务器模块使用此函数。 |
4.3.0 | 被改名而成为apache_request_headers()的别名。因为此函数仅适用于 Apache 。 |
范例
getallheaders()示例
<?php foreach (getallheaders() as $name => $value) { echo "$name: $value\n"; } ?>
参见
apache_response_headers()
获得全部 HTTP 响应头信息
it could be useful if you using nginx instead of apache <?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; } } ?>
There's a polyfill for this that can be downloaded or installed via composer: https://github.com/ralouphie/getallheaders
Beware that RFC2616 (HTTP/1.1) defines header fields as case-insensitive entities. Therefore, array keys of getallheaders() should be converted first to lower- or uppercase and processed such.
dont forget to add the content_type and content_lenght if your are uploading file: <?php function emu_getallheaders() { foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5))))); $headers[$name] = $value; } else if ($name == "CONTENT_TYPE") { $headers["Content-Type"] = $value; } else if ($name == "CONTENT_LENGTH") { $headers["Content-Length"] = $value; } } return $headers; } ?> chears magno c. heck
Due to the else part. }else{ $out[$key]=$value; All server Variables are added to the headers list, and that's not the desired outcome.
apache_request_headers replicement for nginx <?php if (!function_exists('apache_request_headers')) { function apache_request_headers() { foreach($_SERVER as $key=>$value) { if (substr($key,0,5)=="HTTP_") { $key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5))))); $out[$key]=$value; }else{ $out[$key]=$value; } } return $out; } } ?>