Использование хранилища сессий между поддоменами

У меня есть два домена domain1.site.com и domain2.site.com, я установил хранилище сеансов в domain1.site.com, а затем не могу получить хранилище сеансов на другом домене domain2.site.com с той же вкладки. Есть ли другой способ, который можно использовать для идентификации вкладки при навигации по поддоменам?


person binfull    schedule 31.07.2014    source источник
comment
Во-первых, sessionStorage в любом случае не проходит через параллельные вкладки, вам, вероятно, понадобится localStorage для этого. Во-вторых, нет; они имеют разное происхождение, поэтому они не разделяют это. Однако вы можете windowRef.postMessage передавать данные из одного в другой.   -  person Paul S.    schedule 31.07.2014


Ответы (2)


Вопрос немного старше, но, возможно, следующее поможет другим.

Существует решение под названием «Кроссдоменное локальное хранилище», оно работает с комбинацией localStorage и postMessage. При этом у вас есть хранилище, которое вы можете использовать с любым доменом. Я знаю два проекта:

Но это не хранилище сеансов. Чтобы разделить несколько вкладок, вы должны сгенерировать уникальный идентификатор (возможно, дату создания вкладки в миллисекундах) и сохранить его в хранилище сеансов, но только в первый раз, когда в хранилище сеансов уже нет значения. Таким образом, у вас будет один идентификатор на вкладке. Этот идентификатор можно использовать для помещения данных в междоменное локальное хранилище.

person RiZKiT    schedule 20.01.2017

Как упомянул @PaulS в своем комментарии, вы, скорее всего, хотите использовать localStorage.

Тем не менее, вам по-прежнему мешает та же политика происхождения.

Если ваш пример верен, и оба сайта используют один и тот же домен верхнего уровня, например:

домен1 .example.com
домен2 .example.com

Затем вы можете установить document.domain = "example.com";, чтобы позволить им обмениваться информацией.

Подробнее о MDN: https://developer.mozilla.org/en-US/docs/Web/API/document.domain

person Jeremy J Starcher    schedule 31.07.2014
comment
@Paul, я ищу хранилище, которое ограничено только на вкладке, где оно было создано, поэтому я считаю, что для достижения этой цели нам следует использовать sessionStorage вместо localStorage. И я уже пытался установить document.domain в общий домен верхнего уровня и проверил sessionStorage, это не сработало. - person binfull; 31.07.2014
comment
Какие два домена вы используете и для чего вы устанавливаете document.domain? Эта комбинация действительно должна работать. - person Jeremy J Starcher; 31.07.2014
comment
я установил document.domain в домен верхнего уровня, как вы упомянули, но я проверяю `sessionStorage'. Кстати, я пробовал это в Chrome. - person binfull; 31.07.2014
comment
Пробовал и это, и не повезло. - person Dehli; 16.11.2015
comment
он вообще не работает :(. Более того, ссылка, которую вы дали, не документирует это поведение с общим хранилищем для того же document.domain. - person amanteaux; 13.10.2016