Различные объекты localStorage и способы доступа к ним - PullRequest
1 голос
/ 17 июня 2020

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

    // This displays the correct localStorage info, so on page load, it seems to only be 1 localStorage
    console.log(localStorage);

    // Retrieve session storage fields
    // This comes back as null, second localStorage is loaded?
    var firstName = localStorage.getItem('firstName');
    var lastName = localStorage.getItem('lastname');
    var eMail = localStorage.getItem('eMail');
    var phone = localStorage.getItem('phone');
    var company = localStorage.getItem('company');
    var companyRole = localStorage.getItem('companyRole');

    // This does not work as a result
    j('#first-name').val(firstName);
    j('#last-name').val(lastName);
    j('#phone').val(phone);
    j('#eMail').val(eMail);

Когда я проверяю объект localStorage на вкладке Chrom «приложения», я вижу 2 объекта и проверяя первый, я вижу свои данные ... Я не нашел ничего о том, как получить доступ к другому объекту localStorage, возможно ли это вообще?

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Локальное и сессионное хранилище указываются c источнику. Например, следующие источники будут создавать разные объекты локального и сеансового хранилища:
https://example.com/
http://example.com/

Даже если они являются один домен, у них разные протоколы. Это отличает их происхождение.

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

1 голос
/ 17 июня 2020

Как вы можете проверить здесь :

Локальное хранилище для каждого источника (для домена и протокола). Все страницы из одного источника могут хранить одни и те же данные и обращаться к ним.

Итак, если домен страницы и iframe совпадают, значит, данные localstorage. Это означает, что данные localstorage сохраняются доменом, и вы можете CRUD независимо от них, если код находится внутри главной страницы или iframe.

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

...