开发者

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;    
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜