Сессионные с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:
Эрик Лоуренс (Eric Lawrence)
Источник:
Перевод: Galaxer
Комментарии
Ясно. Но почему после закрытия вкладок, копии процесса iexplore.exe, созданные этими вкладками, все еще продолжают работать? Вот даже проверьте: откройте в ИЕ8 много вкладок, затем закройте их все, кроме одной. Смотрите диспетчер задач. Сколько было открыто вкладок, столько копий процесса ИЕ8 и висит. Стоит только закрыть последнюю вкладку (тобишь уже сам ИЕ8, родительский процесс), как убиваются и все эти процессы. Это нормально? Проверьте кто-нибудь...
По теме
- Еще пару слов о защите пользователей IE9 от отслеживания
- [Temp] Бенчмарк HTML5 Blizzard: проверьте аппаратное ускорение вашего браузера
- [Temp] Работаем с закрепление сайтов
- Блог IE в 2010: на связи с вами
- С новым аппаратно-ускоренным годом!
- HTML5: экспериментальный и готовый к использованию
- Доступно декабрьское накопительное обновлениие безопасности для IE
- IE9 и конфиденциальность: введение в защиту от слежения
- Более быстрый и умный список Compatibility View List в IE9
- Субпиксельные шрифты в Internet Explorer 9