PageUp
@PageUp
Default

Как заставить сохранять сессии в Iframe, открытом в приватной вкладке?

Проблема следующая:
В приватной вкладке мой сайт, который открыт в Iframe Яндекса в качестве приложения не сохраняются сессии, которые я устанавливаю в PHP коде.

На странице авторизации (на PHP) устанавливаю сессию логина и пароля, переадресовываю на страницу, где идет сверка данных сессий, но их нет, сессии пустые.

В обычной вкладке все работает.
Так же если открыть свой сайт в приватной вкладке, но вне Iframe, то сессия тоже держится и работает.
То есть сессия не держится, если сайт открыт в качестве Iframe в приватной вкладке.
Поддержка Яндекса откровенно послала, типа ваши проблемы, вы и разбирайтесь с ними.

Попробовал решить проблему через Javascript и sessionStorage, но не помогает.
Написал следующий код, но и он не работает:

// для сохранения данных в сессии
                function saveDataToSession(login, pass) {
                    if (sessionStorage) {
                        sessionStorage.setItem('log', login);
                        sessionStorage.setItem('par', pass);
                    }
                }

                // для получения данных из сессии
                function getDataFromSession() {
                    if (sessionStorage) {
                        let login = sessionStorage.getItem('log');
                        let pass = sessionStorage.getItem('par');
                        return {
                            login: login,
                            pass: pass
                        };
                    }
                }

                // для проверки наличия данных сессии в приватной вкладке браузера
                function checkDataInPrivate() {
                    if (sessionStorage) {
                        let forceSave = sessionStorage.getItem('forceSave');
                        if (forceSave) {
                            return true;
                        }
                    }
                    return false;
                }

                // для принудительного включения сохранения данных сессии 
                function forceSaveDataToSession(data) {
                    if (sessionStorage) {
                        sessionStorage.setItem('data', JSON.stringify(data));
                        sessionStorage.setItem('forceSave', true);
                    }
                }

                // для проверки и поддержания данных сессии в браузере
                function checkAndSaveDataToSession() {
                    let data = getDataFromSession();
                    if (data) {
                        if (checkDataInPrivate()) {
                            forceSaveDataToSession(data);
                        } else {
                            saveDataToSession(data.login, data.pass);
                        }
                    }
                }

                // для установки данных сессии в PHP
                function setDataInPHP(login, pass) {
                    $_SESSION['log'] = login;
                    $_SESSION['par'] = pass;
                }

                // для инициализации данных сессии
                function initSessionData() {
                    let data = getDataFromSession();
                    if (data) {
                        setDataInPHP(data.login, data.pass);
                    }
                }
                // для вызова инициализации данных сессии
                initSessionData();
            </script>
  • Вопрос задан
  • 266 просмотров
Пригласить эксперта
Ответы на вопрос 1
PageUp
@PageUp Автор вопроса
Default
А ответа так и нет.
Даже если создать принудительно сессии через Javascript, то на первом же переходе со страницы на страницу все обнуляется.
Сайт без сессий не работоспособный.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы