长话短说:
我正在为Zend Framework构建一个框架应用程序,我到了需要设置api
模块的部分。我正在使用Zend_Rest_Controller
来完成这项工作。一切正常,我需要在控制器中获取HTTP头来验证api密钥。
我在网上看到的各种教程都是通过前端控制器插件完成的,但是我需要它更多的“即插即用”(每次检查应用程序的配置,决定哪个模块)是api等等。
我尝试了最明显的$this->getRequest()->getHeaders()
,但似乎没有用,至少不是我将要发送api密钥的HTTP标头。 reponse
对象都没有。
任何人都可以帮我这个吗?
答案 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()函数(如果在服务器上可用)来获取它们。