Стороннее приложение в iFrame должно поддерживать сессию заголовка / верхнего кадра - PullRequest
3 голосов
/ 28 августа 2010

Страница имеет заголовок и iFrame. В iFrame есть контент из стороннего приложения. Стороннее приложение запускается с другого сервера, чем страница. Пользователь будет проводить большую часть своего времени в iFrame.

Если пользователь проводит большую часть своего времени в iFrame, время ожидания сеанса верхней страницы истекает.

Какие возможные способы предотвратить это? Есть ли способ обнаружить события постбэка в iFrame и увеличить время ожидания на верхней странице?

Любой пример кода приветствуется.

Спасибо

Ответы [ 2 ]

2 голосов
/ 30 августа 2010

Вы можете добавить еще один скрытый IFrame на главной странице, который настроен на обновление каждые 10 минут (или что-то еще в течение времени ожидания сеанса).Это может привести к тому, что сеанс на главной странице останется живым без обновления страницы пользователем.

РЕДАКТИРОВАНИЕ для добавления запрошенного примера

        var frameHTML='';
    function CheckFrame() {
        //get frame BODY
        var frameBody=$("#FFRAMEID1" + _frameNumber).contents().find("body").html();

        //Compare
        if(frameBody==frameHTML) {
            //Content has not changed.  Do not refresh main session.
        }
        else {
            //Content has changed.  Refresh main session.
        }

        //Set most recent check string
        frameHTML=frameBody;

        //Set OTHER hidden frame source to refresh main page (could be replaced by just an AJAX call)
        $('#FRAMEID2').attr("src", 'FRAMESRC');
    }
0 голосов
/ 30 августа 2010

Я обычно пишу код с предположением, что, если мне придется бороться с фреймворком и писать хитрыми хаки, то, вероятно, я делаю что-то не так.Инициирование пост-обратных событий на вашей родительской странице - это как раз тот хитрый взлом, которого вам следует избегать.

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

Такая простая стратегия исключает необходимость повторного пинга вашей страницы.1005 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...