Чтение заголовков HTTP в контроллере (Zend Framework) - PullRequest
10 голосов
/ 22 июня 2010

Короче говоря: я создаю скелетное приложение для Zend Framework и перешел к той части, где мне нужно настроить модуль api.Я использую Zend_Rest_Controller для этой работы.Все в порядке до этой части, где мне нужно получить заголовки HTTP в контроллере для проверки ключа API.

В различных уроках, которые я читал в Интернете, это делается с помощью плагина фронт-контроллера,но мне нужно, чтобы он был более «подключи и работай», чем этот (проверяя каждый раз конфигурацию приложения, решая, какой модуль является API и т. д.).

Я пробовал то, что казалось наиболее очевидным $this->getRequest()->getHeaders()но, похоже, не работает, по крайней мере, не для заголовков HTTP, где я буду пропускать мой ключ API.Ни один объект reponse.

Может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

20 голосов
/ 22 июня 2010

Я все-таки нашел способ сделать это:)

С помощью метода preDispatch() в вашем контроллере вы можете сделать следующее:

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

Кажется, что Zend_Controller_Request_HttpОбъект дает вам доступ к заголовкам.Более подробную информацию о Zend_Controller_Request_Http вы можете найти здесь

10 голосов
/ 01 сентября 2011

Как сказал Богдан, вы можете найти эту информацию в классе Zend_Controller_Request_HTTP.Его можно найти в самом контроллере, выполнив:

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

К сожалению, вы не можете получить доступ ко всем заголовкам одновременно, но ZF просто использует функцию apache_request_headers (), если она доступна на сервере, чтобы получить их.

...