Рекомендуемые сообщения

LuckySrG    17

Подскажите почему в контроллере не работает эта конструкция и как это поправить?

$this->response->addHeader($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');

Хотя эта нормально отрабатывает

Header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');

У меня стоит модуль кеширования BOOST и это необходимо для его нормальной работы. 

OcStore Версия 1.5.5.1.2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    163

Заголовки из класса Response отправляются прямо перед выводом и только в том случае, если до этого момента ничего из заголовков не было отправлено. 

if (!headers_sent()) {
	foreach ($this->headers as $header) {
		header($header, true);
	}
}

Скорей всего какой-то заголовок отправляется до этого момента.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
LuckySrG    17

Заголовки из класса Response отправляются прямо перед выводом и только в том случае, если до этого момента ничего из заголовков не было отправлено. 



if (!headers_sent()) {
	foreach ($this->headers as $header) {
		header($header, true);
	}
}

Скорей всего какой-то заголовок отправляется до этого момента.

 

Для проверки, в томже месте ставил этот заголовок, все нормально отрабатывал.

$this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 404 Not Found');

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
LuckySrG    17

Вот код который работает, 

$LastModified_unix = strtotime(information_info['date_modified']); 
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false; if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))	
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));  
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))	
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix)
	{	
	header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');	
	exit;
	}
$this->response->addHeader('Last-Modified: '. $LastModified);

Но если эту строку

header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');

поменять на эту 

$this->response->addHeader($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');

Заголовок не передается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    163

У меня однажды mod_pagespeed заголовки 304 резал, после обновления - перестал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 545

Подскажите почему в контроллере не работает эта конструкция и как это поправить?

$this->response->addHeader($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');

Хотя эта нормально отрабатывает

Header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');

У меня стоит модуль кеширования BOOST и это необходимо для его нормальной работы. 

OcStore Версия 1.5.5.1.2

 

$_SERVER['SERVER_PROTOCOL']

Так нельзя - могут "пробить" безопасность

Для этого opencart и выводит через обертку

А Header - это вывод "сразу", т.е. наплевав на других - тоже нельзя так делать, могут быть ошибки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
LuckySrG    17

У меня однажды mod_pagespeed заголовки 304 резал, после обновления - перестал.

 

В том-то и дело, что заголовок, то выводит, но только через header

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
LuckySrG    17

 

Для проверки, в томже месте ставил этот заголовок, все нормально отрабатывал.



$this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 404 Not Found');

 

Убрал exit и все нормально запустилось ) спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    163

Убрал exit и все нормально запустилось ) спасибо за помощь.

 

Всегда так. Строишь мост через забор, построил, перешел, а оказалось, что там дверь была. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу