1.检查自定义头部是否带有下划线_
nginx 会将带下划线_的头部视为变量过滤掉,下面设置可以取消掉
underscores_in_headers on;
2.是否用了getallheaders获取头部
此函数不同php版本对不同模式下的支持
| 版本 | 说明 |
|---|---|
| 5.5.7 | 此函数可用于 CLI server。 |
| 5.4.0 | 此函数可用于 FastCGI。 此前仅在PHP以 Apache 模块方式运行时支持。 |
| 4.3.0 | 4.3.0 |
如果不支持getallheaders函数,可以试下下面的方式
if (function_exists('getallheaders')) {
$headers = getallheaders();
foreach ($headers as $name => $value) {
$this->_headers->add($name, $value);
}
} elseif (function_exists('http_get_request_headers')) {
$headers = http_get_request_headers();
foreach ($headers as $name => $value) {
$this->_headers->add($name, $value);
}
} else {
foreach ($_SERVER as $name => $value) {
if (strncmp($name, 'HTTP_', 5) === 0) {
$name = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))));
$this->_headers->add($name, $value);
}
}
}