Сесійні сookies, sessionStorage, IE8 або “Як запустити одночасно дві сесії онлайнового поштового клієнта?”, Різне, Інтернет-технології, статті

В Internet Explorer 8 управління сесіями браузера реалізовано багато простіше, ніж у попередника. Наприклад, ви збираєтеся працювати з двома вікнами Hotmail, в кожному з яких ви керуєте різними обліковими записами. Вибравши опцію “Нова розмова” з меню “Файл”, ви відкриєте нове вікно браузера. Це вікно не буде користуватися тим же списком файлів cookies, що й колишнє, тому ви можете увійти в Hotmail (як і в більшість інших веб-додатків) під іншим користувачем. Прихильникам командного рядка пропонується запустити iexplore.exe з параметром-nomerge.

Навпаки, якщо ви просто запустіть “Нове вікно”, “Створити вкладку” або “Створити копію вкладки” з того ж меню “Файл”, або за допомогою ярлика на робочому столі, нова вкладка або вікно звернеться до тих же файлів cookies, що і батьківське. Ця процедура називається “злиттям сесій”.

Чому браузери задіють злиття сесій?
Коректне управління злиттям сесій дуже важливо, оскільки багато веб-додатки створені таким чином, що припускають його наявність. Наприклад, коли веб-додаток відкриває спливаюче вікно, воно зазвичай виходить з того, що це вікно буде використовувати ті ж файли cookies, що й основне вікно, так що користувач залишиться всередині вже запущеної сесії з усіма своїми настройками і т.п. Точно так же, коли користувач ініціює команду “Створити копію вкладки”, веб-додаток закономірно очікує, що копія покаже те ж саме вміст, що й оригінал. Для того, щоб такий сценарій запрацював, необхідно використання одних і тих же файлів cookies.

З іншого боку, автори протоколу HTML5 підкреслюють, що спільне використання файлів cookies різними вікнами і вкладками може привести до деяких проблем.

Припустимо, користувач купує різні авіаквитки в двох різних вікнах, використовуючи один і той же сайт. Якщо сайт використовує файли cookies для того, щоб відслідковувати який саме квиток купується, а користувач в цей час переходить з різних посиланнях то в одному вікні, то в іншому, що купується в даний момент квиток може “витекти” з одного вікна в інше, що, в свою чергу, призведе до покупки двох однакових квитків, а користувач цього навіть не помітить.

Тому в HTML5 функція sessionStorage розроблена таким чином, що вкладки в рамках однієї сесії все одно використовують різні, незалежні контейнери. Якщо змінити атрибути sessionStorage в одній вкладці, це не позначиться на іншій вкладці, навіть в рамках єдиної сесії. Навпаки, атрибут localStorage поводиться практично так само, як і зберігаються на диску постійні файли Cookies, – зміни атрибутів localStorage відображаються у всіх вкладках браузера під час активної (і майбутніх) сесій.

Я підготував спеціальну тестову сторінку, на якій можна випробувати злиття сесій і запуск нової сесії для IE8: www.enhanceie.com/test/sessions/

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*