How to change response header in zend_action
I want to make something like this:
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
header('HTTP/1.1 304 Not Modified');
exit;
}
...... other code .....
typing to do it this way:
public function imageAction()
{
$request = $this->getRequest();
$response = $this->getResponse();
if ($request->getHeader('IF_MODIFIED_SINCE')) {
$response->setHttpResponseCode(304);
return;
}
var_dump($request->getHeaders());
$response->setHeader('Last-Modified', gmdate('D, d M Y H:i:s', time()).' GMT');
var_dump($开发者_StackOverflow社区response->getHeaders());
echo '11111';
exit;
Hope result readers must be like
> this: Date: Thu, 07 Jul 2011 09:28:08
> GMT Server: Apache/2.2.15 (Linux/SUSE)
> X-Powered-By: PHP/5.3.7RC2-dev
> Last-Modified: Thu, 07 Jul 2011
> 09:27:48 GMT Content-Length: 7101
> Content-Type: text/html
>
> 200 OK
but it is always :
> Date: Thu, 07 Jul 2011 09:30:16 GMT
> Server: Apache/2.2.15 (Linux/SUSE)
> X-Powered-By: PHP/5.3.7RC2-dev
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache,
> must-revalidate, post-check=0,
> pre-check=0 Pragma: no-cache
> Content-Length: 347 Keep-Alive:
> timeout=15, max=99 Connection:
> Keep-Alive Content-Type: text/html
>
> 200 OK
or I must use zend_cache?
It seems to be working fine. Try these two actions to test. You'll need to set your domain name in place of 'yourdomain
' below.
public function headerAction()
{
$response = $this->getResponse();
$request = $this->getRequest();
if ($request->getHeader('IF-MODIFIED-SINCE')) {
$response->setHttpResponseCode(304);
return;
}
$response->setHeader('Pragma', 'public', true);
$response->setHeader('Cache-control', 'max-age=' . 60*60*24*14, true);
$response->setHeader('Last_Modified', gmdate('D, d M Y H:i:s', time()).' GMT', true);
// don't exit or die here or Zend Framework won't send our $response or headers
// If you don't want to render a script, uncomment the two lines below
// $this->_helper->viewRenderer->setNoRender();
// $this->_helper->layout->disableLayout();
}
public function clientAction()
{
$client = new Zend_Http_Client('http://yourdomain/test/header');
$client->setHeaders('If-Modified-Since', 'Sat, 29 Oct 1994 19:43:31 GMT');
$response = $client->request();
Zend_Debug::dump($response->getStatus()); //prints 304
Zend_Debug::dump($response->getHeaders());
exit;
}
精彩评论