$ window.sessionStorage vs $cookieStore

В чем разница между использованием файла cookieStore и & window.sessionStorage? Бывают ли времена, когда нужно использовать друг друга? Проблемы безопасности?

Вот что я знаю до сих пор:

В документах AngularJS указано, что служба $cookieStore поддерживается "сеансовыми файлами" (https://docs.angularjs.org/api/ngCookies/service/ $cookieStore). Таким образом, похоже, что информация, хранящаяся с $cookieStore, привязана к окну/вкладке, где она используется. Это подтверждается использованием таинственной службы браузера $в коде для $cookieStore: https://github.com/angular/angular.js/blob/master/src/ngCookies/cookies.js#L125.

Однако, поскольку $browser является внутренней службой и может быть изменен, я не вижу, как он хранит данные, чтобы увидеть, похоже ли это на sessionStorage.

Те же области браузера/вкладки/окна, по-видимому, применяются к $window.sessionStorage(Сфера sessionStorage и localStorage).

Ответ 1

$cookieStore с использованием сеансовых файлов cookie означает, что данные сохраняются как файлы cookie, которые привязаны к сеансу, то есть не постоянны. Файл cookie привязан к определенному домену, на котором он зарегистрирован, но может быть разделен между субдоменами. Большая проблема в хранилище файлов cookie заключается в том, что эти значения cookie будут отправляться на сервер для любых запросов в этот домен. Он будет делиться между окнами и вкладками в том же сеансе в том же домене.

$window.sessionStorage просто обращается к окну .sessionStorage, который действительно не имеет ничего общего с Angular. Доступ к нему через $window просто дает вам возможность легче тестировать, используя издеваемую версию окна $. Хранилище сеансов привязано к текущему окну, поэтому, в отличие от файлов cookie, если вы открываете новую вкладку на тот же самый URL, это будет новый объект sessionStorage. Существует также больше места для хранения, чем куки. Файл cookie ограничен 4K, sessionStorage может отличаться для каждого браузера, но обычно составляет около 5 МБ.

Там также window.localStorage(или $window.localStorage), который в основном такой же, как sessionStorage, за исключением того, что он облагается доменом (две вкладки могут совместно использовать одни и те же данные - там даже событие хранения, чтобы вы могли узнать, когда другой вкладка меняет его) и сохраняется при закрытии браузера.