Je remplace les cookies par stockage local sur les navigateurs qui le supportent (tous sauf IE). Le problème est le suivant site.example
y www.site.example
stockent leurs propres objets localStorage. Je crois que www
est considéré comme un sous-domaine (une décision stupide si vous voulez mon avis). Si un utilisateur était à l'origine sur site.example
et décide de taper www.site.example
lors de sa prochaine visite, toutes ses données personnelles seront inaccessibles. Comment faire pour que tous mes "sous-domaines" partagent le même localStorage que le domaine principal ?
Réponses
Trop de publicités?Voici comment je l'utilise pour tous les domaines...
- Utilisez un iframe de votre domaine parent - par exemple
parent.example
- Ensuite, sur chaque
child.example
il suffit d'envoyer un postMessage à votre domaineparent.example
iframe - Tout ce que vous avez à faire est d'établir un protocole sur la façon d'interpréter vos messages postMessage pour parler à l'outil
parent.example
iframe.
Si vous utilisez la solution iframe et postMessage uniquement pour ce problème particulier, je pense qu'il serait moins fastidieux (à la fois en termes de code et de calcul) de se contenter de stocker les données dans un cookie sans sous-domaine et, si elles ne sont pas déjà dans localStorage au chargement, les récupérer dans le cookie .
Pour :
- N'a pas besoin de l'iframe et du postMessage supplémentaires.
Cons :
- Les données seront disponibles pour tous les sous-domaines (pas seulement www). Si vous ne faites pas confiance à tous les sous-domaines, il se peut que cela ne vous convienne pas.
- Envoie les données au serveur à chaque demande. Ce n'est pas génial, mais selon votre scénario, cela représente peut-être moins de travail que la solution iframe/postMessage.
- Dans ce cas, pourquoi ne pas utiliser directement les cookies ? Cela dépend du contexte.
- 4K max cookie size, total across all cookies for the domain (Merci à Blake de l'avoir signalé dans les commentaires)
Je suis d'accord avec les autres commentateurs, il semble que cela devrait être une option spécifiable pour localStorage afin que des solutions de contournement ne soient pas nécessaires.
Je suggère de faire site.example
rediriger vers www.site.example
pour des raisons de cohérence et pour éviter des problèmes de ce type.
Pensez également à utiliser une solution multi-navigateurs telle que PersistJS qui peut utiliser le stockage natif de chaque navigateur.
- Réponses précédentes
- Plus de réponses