Яндекс Браузер и PWA

Версия CS-Cart: 4.20.1 (Мультивендор)
Браузер: Яндекс.Браузер (мобильная версия для Android).
Другие браузеры: Chrome, Firefox — работают корректно .

Описание проблемы

При использовании модуля PWA на сайте CS-Cart пользователи Яндекс.Браузера на Android сталкиваются со следующими проблемами:

  1. При первой попытке авторизации браузер показывает предупреждение об «атаке» (из-за неполной цепочки сертификатов, которую браузер не может достроить самостоятельно).
  2. Со второй попытки вход выполняется, но при переходе на любую страницу сессия пользователя самопроизвольно сбрасывается .
  3. Ключевое наблюдение: Проблема полностью исчезает в режиме «Инкогнито» .
  4. Техническая деталь: Консоль разработчика показывает, что старый Service Worker продолжает кэшироваться и работать, конфликтуя с механизмом обновления сессии. Принудительное обновление через DevTools («Update on reload») временно решает проблему.

Причина

Мобильный Яндекс.Браузер имеет неполную поддержку сторонних PWA, что приводит к конфликту Service Worker с сессионными куками. В режиме инкогнито Service Worker не используется, поэтому проблема не проявляется.

Предлагаемое решение:
Решение 1: Добавить определение User-Agent и отключать PWA для Яндекс.Браузера.
Решение 2: Добавить версионирование Service Worker, привязанное к очистке кэша в админке.

  • При нажатии «Очистить кэш» — автоматически менять версию Service Worker
  • Имя кэша формировать с учётом версии: offline-v{номер_версии}
  • В обработчике install удалять все старые версии кэша

В текущем модуле PWA для CS-Cart обновляется только офлайн-страница , а сам Service Worker нет.

В техподдержку Яндекса я тоже написала, но они в принципе не поддерживают PWA, поэтому, логичнее их вообще исключить, чтобы не было проблем с сессиями.

Я нашла в чем проблема!
Яндекс браузер по-старому ищет файл манифеста в корне сайта! Сейчас в модуле pwa файл манифеста генерируется на уровне php и не лежит в корне сайта, но доступен по ссылке манифеста. Яндекс на это ругался и воспринимал пользователя при авторизации как бота и выдавал CSRF атаку. Я положила файл манифеста в корень сайта (у меня был от моего модуля pwa) И ВХОД ЗАРАБОТАЛ!!!

Яндексу я напишу об этой проблеме. Они 3 недели ищут, ничего найти не могут, хоть я им все логи скинула. Выяснила я это случайно позавчера, потому что пользователи очень жаловались, что вход с яндекс браузера не работал!

Но, моё предложение по “Добавить версионирование Service Worker, привязанное к очистке кэша в админке”. остаётся в силе!

3 лайка