Очистить html5 sessionStorage через http / https - PullRequest
2 голосов
/ 15 марта 2012

У меня есть два веб-сайта http://www.example.com и https://www.example.com. Я использую хранилище сеансов HTML5 для хранения пользовательских настроек. Пользователь достигает http://www.example.com, и я загружаю некоторые настройки по умолчанию через ajax. Они переходят на страницу, требующую входа в систему, и отправляются на https://www.example.com/login.html После того, как они завершат вход в систему, они отправляются обратно в http://www.example.com, где, поскольку они теперь вошли в систему, я должен получить новые настройки с сервера. Проблема в том, что http и https имеют разное происхождение и не могут совместно использовать хранилище сеансов.

То, что я пробовал, не работает: Загрузка страницы http://www.example.com/clearSession.html в iframe, который просто запускает sessionStorage.removeItem ('key'), чтобы очистить мои данные, но, похоже, это имеет собственный контекст просмотра, поэтому он не работает.

Вещи, которые я пробовал эту работу, но я не хочу использовать: Использование куки. Это прекрасно работает, потому что http и https могут обмениваться файлами cookie, но это означает, что все мои пользовательские настройки отправляются на сервер при каждом запросе ресурса. Обычно это около 4 КБ, но может быть до 1 МБ данных. Нет, я не могу разместить свои ресурсы в другом домене.

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

Ответы [ 2 ]

0 голосов
/ 13 июля 2017

Переключите все на https, теперь это стандарт.

0 голосов
/ 04 апреля 2013

Я могу рассказать вам, как мы решили эту проблему, но это не связано с локальным sessionStorage.Мы используем сеанс на стороне сервера для хранения данных для входа пользователя (имя пользователя, идентификатор и т. Д.) После того, как они были на нашем сервере аутентификации и обратно.Прежде чем они будут аутентифицированы, вы все равно можете получить от них данные о предпочтениях с помощью AJAX, чтобы сообщить об этих предпочтениях веб-службе на сервере, которая может сохранить их в области сеанса сервера.Однако это нарушит модель RESTful, поскольку предполагает использование сеансов на стороне сервера.Это будет зависеть от языка вашего сервера и от того, как вы настроили свои веб-сервисы.

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

...