использовать localStorage через поддомен

Я заменяю файлы cookie на localStorage в браузерах, которые могут его поддерживать (любой, кроме IE). Проблема заключается в том, что site.com и www . site.com хранят свои собственные отдельные объекты localStorage. Я считаю, что www считается поддоменом (глупое решение, если вы спросите меня). Если пользователь изначально был на site.com и решил ввести www . site.com при следующем посещении, все его личные данные будут быть недоступным. Как я могу получить все мои «поддомены» для совместного использования в том же localStorage, что и основной домен?

65 голосов | спросил JoJo 26 +04002010-10-26T21:56:16+04:00312010bEurope/MoscowTue, 26 Oct 2010 21:56:16 +0400 2010, 21:56:16

6 ответов


0

Вот как я использую его в разных доменах ...

  • Используйте iframe из родительского домена - скажем parent.com
  • Затем на каждом домене child.com просто выполните postMessage для своего iframe parent.com
  • Все, что вам нужно сделать, - это настроить протокол интерпретации ваших сообщений postMessage для общения с iframe parent.com.

Надеюсь, это поможет:)

ответил Mayank Jain 11 +04002011-10-11T10:48:34+04:00312011bEurope/MoscowTue, 11 Oct 2011 10:48:34 +0400 2011, 10:48:34
0

Если вы используете решение iframe и postMessage именно для этой конкретной проблемы, я думаю, что может быть меньше работы (как в коде, так и в вычислениях), чтобы просто сохранить данные в cookie без поддоменов и, если он еще не загружен в localStorage, извлеките его из файла cookie .

Плюсы:

  • Не требует дополнительной настройки iframe и postMessage.

Минусы:

  • Сделает данные доступными для всех поддоменов (не только для www), поэтому, если вы не доверяете всем поддоменам, они могут не сработать для вас.
  • Отправляет данные на сервер при каждом запросе. Не очень, но в зависимости от вашего сценария, может быть, все еще меньше работы, чем решение iframe /postMessage.
  • Если вы делаете это, почему бы просто не использовать файлы cookie напрямую? Зависит от вашего контекста.
  • Максимальный размер файла cookie 4K, всего по всем файлам cookie для домена (спасибо Блейку за то, что он указал это в комментариях)

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

ответил Matt 22 Jpm1000000pmThu, 22 Jan 2015 21:05:13 +030015 2015, 21:05:13
0

Я предлагаю сделать так, чтобы site.com перенаправлял на www.site.com как для согласованности, так и для избежания подобных проблем.

Кроме того, рассмотрите возможность использования кросс-браузерного решения, такого как PersistJS , которое может использовать собственное хранилище каждого браузера.

ответил Eran Galperin 26 +04002010-10-26T22:00:55+04:00312010bEurope/MoscowTue, 26 Oct 2010 22:00:55 +0400 2010, 22:00:55
0

Я использую xdLocalStorage, это легковесная библиотека js, которая реализует интерфейс LocalStorage и поддерживает междоменное хранение с помощью обмена сообщениями iframe после сообщения. (поддержка angularJS)

https://github.com/ofirdagan/cross-domain-local-storage

ответил biology.info 10 ThuEurope/Moscow2015-12-10T17:07:35+03:00Europe/Moscow12bEurope/MoscowThu, 10 Dec 2015 17:07:35 +0300 2015, 17:07:35
0

Вот как я решил это для своего сайта. Я перенаправил все страницы без www на www.site.com. Таким образом, это всегда займет местное хранилище www.site.com

Добавьте следующее в свой .htacess , (создайте его, если у вас его еще нет) в корневом каталоге

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
ответил Ayush Baheti 22 MaramWed, 22 Mar 2017 11:31:18 +03002017-03-22T11:31:18+03:0011 2017, 11:31:18
0

Вы можете просто использовать свойство document.domain. Если вы поместите это в первые действия JavaScript:

document.domain="mysite.com";
ответил chapov 20 ThuEurope/Moscow2012-12-20T02:26:46+04:00Europe/Moscow12bEurope/MoscowThu, 20 Dec 2012 02:26:46 +0400 2012, 02:26:46

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132