Перейти к содержанию

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

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

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

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

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

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

OcStore Версия 1.5.5.1.2

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


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

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

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

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

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


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

Заголовки из класса 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');

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


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

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

$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');

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

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


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

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

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


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

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

$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 - это вывод "сразу", т.е. наплевав на других - тоже нельзя так делать, могут быть ошибки

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


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

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

 

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

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


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

 

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



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

 

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

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


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

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

 

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

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.