Глюки в магазине на https

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 1.X
#1 18 октября 2017 в 13:37
Странная проблемы вылезла после перехода на https сайта магазина:
Некоторые аяксовые запросы — удаление из корзины, оценка товара — редиряктят на главную.
При том что другие, например, добавление товара в корзину, работают нормально.

Отключаю https на сайте — проблема исчезает. scratch


У кого стоит InstantShop с https — отзовитесь, хочу понять это только у меня проблема или нужно обращаться к R2
#2 18 октября 2017 в 13:48
Sonat
В шаблонах или в самих скриптах надо проверить чтоб адрес использовался https, у вас скорее всего на хостинге стоит безусловная переадресация всех запросов на HTTPS
#3 18 октября 2017 в 14:17

В шаблонах или в самих скриптах надо проверить чтоб адрес использовался https

kirkr
Эх знать бы где искать… scratch
Попробовал поиском запросить, где в файлах написано "http:" — так оказалось что в почти во всех т.к. верху есть строка

instantcms.ru/, info@instantcms.ru

Каких-то левых скриптов вроде нет.

Т.е. речь про обычную ссылку в корзине
  1. <a class="delete" href="/shop/deletefromcart/207925" title="Отказаться"></a>
Из которой стандартный роутер достает
  1. 'do' => 'delete_from_cart',
  2. 1 => 'delete_from_cart_item_id'
Которые фронтенд передает модели
  1. $model->deleteFromCart($item_id);
Которую модель превращает в запрос
  1. $this->inDB->query("DELETE FROM cms_shop_cart WHERE id = '{$cart_item_id}' LIMIT 1");
И все — никаких http sad
#4 18 октября 2017 в 18:43
Sonat, может это поможет
#5 20 октября 2017 в 19:41
eoleg, спасибо, но я не очень дружу с линуксом и обычно, решая проблемы сайта, разворачиваю бекап на локальной машине под виндой.

Вроде заменил, где нашел, "http" на "https:" — но это не очень помогло. cryосновная проблема осталась...


Нашел, что отрабатывая запрос удаления, выполняется $inCore->redirectBack();

У самой же функции прописано
  1. public static function redirect($url, $code='303'){
  2. if ($code == '301'){
  3. header('HTTP/1.1 301 Moved Permanently');
И вот смотрю на этот HTTP заголовок и думаю может в нем дело? scratch
#6 24 октября 2017 в 04:16
Проблему решил. Закрываю.

т.к. завернул на мойсайт всё, в т.ч. и с www.мойсайт
getBackURL возвращал всегда ''/" вместо адреса вызова и возврата

Сбой проходил в файле core/cms.php в месте:
  1. $refer_host = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
  2. if($refer_host == $_SERVER['HTTP_HOST']){
  3. $back = strip_tags($_SERVER['HTTP_REFERER']);
  4. }
т.е. сравненивалось
$_SERVER['HTTP_HOST'] — который был с www
и хост в $_SERVER['HTTP_REFERER']? который уже был без www

Исправил, поменяв условие сравнения на
  1. if($refer_host == $_SERVER['HTTP_X_REAL_HOST']){
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.