Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах

 

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



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

 

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

Надіслати
Поділитися на інших сайтах


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

 

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.