我正在开发一个Web应用程序,需要捕获客户端发送的自定义标头数据。在我的localhost中安装了PHP 5.4,我正在使用getallheaders()
。
但是我的主机安装了PHP 5.3。我无法得到标题。我已经尝试过其他方式:
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;
}
}
和
apache_request_headers(), apache_response_headers()
还有其他方法吗?我的托管使用的是PHP 5.3(FastCGI)。
更新
好吧,我遇到了问题所在。所以首先(为了证明这个概念),我将PHP切换为以Apache模块运行,并按预期为是,我可以使用getallheaders()
。
之后我尝试了其他rest client / debuger发送自定义标头(现在为FastCGI),我的代码能够捕获标头(在$ _SERVER内)。所以问题是,为什么第一个REST客户端只有在服务器作为Apache模块运行时才能发送头。
如果我的一个用户遇到同样的问题,而另一个用户没问题,我很害怕。