在Controller(Zend Framework)中读取HTTP标头

时间:2010-06-22 10:17:02

标签: php zend-framework http-headers

长话短说: 我正在为Zend Framework构建一个框架应用程序,我到了需要设置api模块的部分。我正在使用Zend_Rest_Controller来完成这项工作。一切正常,我需要在控制器中获取HTTP头来验证api密钥。

我在网上看到的各种教程都是通过前端控制器插件完成的,但是我需要它更多的“即插即用”(每次检查应用程序的配置,决定哪个模块)是api等等。

我尝试了最明显的$this->getRequest()->getHeaders(),但似乎没有用,至少不是我将要发送api密钥的HTTP标头。 reponse对象都没有。

任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:20)

毕竟我找到了一种方法:)

在控制器的preDispatch()方法中,您可以执行以下操作:

public function preDispatch()
{
    $request = new Zend_Controller_Request_Http();
    $key = $request->getHeader('x-apikey');
}

似乎Zend_Controller_Request_Http对象允许您访问标头。有关Zend_Controller_Request_Http的更多信息,您可以找到here

答案 1 :(得分:9)

正如Bogdan所说,你可以在Zend_Controller_Request_HTTP类中找到这些信息。它可以在控制器本身中找到:

$this -> getFrontController() -> getRequest() -> getHeader('Content-Type');

不幸的是,您无法一次访问所有标头,但ZF所做的只是使用apache_request_headers()函数(如果在服务器上可用)来获取它们。