我正在开发一个 Web 应用程序,它需要捕获客户端发送的自定义标头数据。在我的本地主机中安装了 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()
.
之后,我尝试了其他休息客户端/调试器来发送自定义标头(现在作为 FastCGI),并且我的代码能够捕获标头(在 $_SERVER 内)。所以问题是,为什么第一个 REST 客户端只有在服务器作为 Apache 模块运行时才能发送标头。
我担心如果我的一个用户遇到同样的问题而另一个人很好。