variable setitem remove localstorage example create all javascript subdomain local-storage

javascript - setitem - use localStorage en los subdominios



sessionstorage (6)

Estoy reemplazando las cookies con localStorage en los navegadores que pueden soportarlo (cualquiera menos IE). El problema es site.com y www . site.com almacena sus propios objetos localStorage separados. Creo que www se considera un subdominio (una decisión estúpida si me preguntas). Si un usuario estaba originalmente en site.com y decide escribir en www . site.com en su próxima visita, todos sus datos personales serán inaccesibles. ¿Cómo obtengo todos mis "subdominios" para compartir el mismo localStorage como el dominio principal?


Así es como lo resolví para mi sitio web. Redirigí todas las páginas sin www a www.site.com. De esta manera, siempre será necesario el almacenamiento local de www.site.com

Agregue lo siguiente a su .htacess , (cree uno si ya no lo tiene) en el directorio raíz

RewriteEngine On RewriteCond %{HTTP_HOST} !^www/. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]


Así es como lo uso en todos los dominios ...

  • Use un iframe de su dominio principal - digamos parent.com
  • Luego, en cada dominio de child.com, simplemente haga una postMessage a su iframe de parent.com
  • Todo lo que necesita hacer es configurar un protocolo de cómo interpretar sus mensajes de postMessage para hablar con el iframe de parent.com.

Espero que ayude :)


Estoy utilizando xdLocalStorage, esta es una biblioteca js liviana que implementa la interfaz LocalStorage y admite el almacenamiento de dominios cruzados mediante el uso de comunicación iframe post mensaje. (Soporte angularJS)

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


Si está utilizando la solución iframe y postMessage solo para este problema en particular, creo que podría ser menos trabajo (tanto por código como por cálculo) almacenar solo los datos en una cookie sin subdominio y, si no lo está ya en localStorage en carga, cógelo de la cookie .

Pros:

  • No necesita el iframe extra y la configuración de postMessage.

Contras:

  • Hará que los datos estén disponibles en todos los subdominios (no solo en www), de modo que si no confía en todos los subdominios, puede que no funcionen para usted.
  • Enviará los datos al servidor en cada solicitud. No es genial, pero dependiendo de su escenario, quizás aún menos trabajo que la solución iframe / postMessage.
  • Si está haciendo esto, ¿por qué no simplemente usa las cookies directamente? Depende de tu contexto.
  • Tamaño de cookie máximo de 4 KB, total en todas las cookies del dominio (Gracias a Blake por señalar esto en los comentarios)

Sin embargo, estoy de acuerdo con otros comentaristas, parece que debería ser una opción especificable para localStorage, por lo que no se requieren soluciones alternativas.


Solo puede usar la propiedad document.domain . Si pones esto en las primeras acciones de JavaScript:

document.domain="mysite.com";


Sugiero que site.com redirija a www.site.com tanto para la coherencia como para evitar problemas como este.

Además, considere usar una solución de navegador PersistJS como PersistJS que puede usar cada almacenamiento nativo del navegador.