2

我正在开发一个 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 模块运行时才能发送标头。

我担心如果我的一个用户遇到同样的问题而另一个人很好。

4

0 回答 0