Локальное хранилище браузера отсутствует после перенаправления Patreon - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть простая веб-страница, которая использует клиентские скрипты для хранения нескольких пользовательских настроек в локальном хранилище браузера.(Статус флажков, развернутых / свернутых меню и т. Д.)

У меня есть кнопка Patreon на моей веб-странице.Когда пользователь щелкает его, браузер пользователя переходит на страницу аутентификации Patreon и, если пользователь нажимает кнопку, чтобы предоставить мне доступ к своему статусу поддержки пользователей, Patreon перенаправляет свой браузер на маршрут на моем сайте, где я записываю его статус поддержки изатем перенаправьте их обратно на мою домашнюю страницу.

Когда пользователь наконец возвращается на мою домашнюю страницу, все данные локального хранилища пользователя отсутствуют.Если пользователь нажимает Обновить после возврата на мой сайт, локальное хранилище по-прежнему отсутствует.Однако, если они закроют вкладку и откроют мой сайт на новой вкладке (или перейдут на другой сайт и затем вернутся назад на той же вкладке), исходные значения локального хранилища снова будут видны.

Я понимаю, что браузерлокальное хранилище связано с источником локального хранилища.https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

Я подтвердил, что и протокол (https), и домен идентичны для точки, в которой установлено хранилище, и точки, когда пользователь возвращается на мой сайт.Я также подтвердил, что окончательный маршрут посадки идентичен.

домашняя страница, на которой изначально установлены локальные значения хранилища: https://www.example.com/page1 конечная целевая страница: https://www.example.com/page1

Я заметил, что если я остановлю пользователя на маршруте перенаправления Patreon (куда первоначально перенаправляется Patreon)пользователи и где я записываю статус поддержки пользователей), при открытии отладчика браузера и выдаче document.domain выдается: ""

Однако настройка document.domain и обновление не восстанавливают локальное хранилище.

Я наблюдаю такое поведение как в Firefox 63.0.3 (64-разрядная версия), так и в Chrome 71.0.3578.80 (64-разрядная версия).

Есть идеи, чего мне не хватает?

[ПРАВИТЬ] Вот код, который я использую для записи состояния пользователя в локальное хранилище:

if(localStorage.userOptions){ restoreOptsFromLocal(); }
else{ persistOptsToLocal(); }
...
restoreOptsFromLocal = function(){
    opts = JSON.parse(localStorage.getItem('userOptions'));
}
persistOptsToLocal = function(){ 
    localStorage.setItem('userOptions', JSON.stringify(opts));
}

1 Ответ

0 голосов
/ 09 декабря 2018

Потратил несколько часов на поиски и отладку, так и не поняв причину.Текущий обходной путь - установить для цели Patreon href значение «_blank», чтобы процесс аутентификации patreon происходил в отдельном окне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...