Quelle est la différence entre le localStorage, sessionStorage, de session et les cookies?
Quelles sont les techniques les avantages et les inconvénients de localStorage, sessionStorage, de session et des cookies, et quand puis-je utiliser l'un plutôt que l'autre?
- C'est aussi un sujet connexe bon d'avoir un regard : le stockage Local HTML5 vs stockage de Session ( stackoverflow.com/questions/5523140/... )
- Notez également que les cookies de session vivre aussi longtemps que la FENÊTRE du navigateur est ouvert (pas d'onglet dans lequel ils ont été établis), MAIS sessionStorage est annulée dès que vous fermez l'onglet...
- Oui session est également de type de cookie. La caractéristique est qu'il est transitoire où le cookie est la persistance
- Un particulier de la fenêtre du navigateur n'est pas pertinente élément de l'INTERFACE utilisateur.
Vous devez vous connecter pour publier un commentaire.
C'est un très vaste champ d'application de la question, et beaucoup de les avantages/inconvénients seront contextuelle de la situation.
Dans tous les cas, ces mécanismes de stockage seront spécifiques à un navigateur sur un ordinateur individuel/de l'appareil. Aucune obligation de stocker des données sur une base continue, à travers les séances auront besoin de faire participer votre application côté serveur, probablement à l'aide d'une base de données, mais peut-être XML ou d'un texte/fichier CSV.
localStorage, sessionStorage, et les cookies sont de tous les clients des solutions de stockage. Les données de Session sont conservées sur le serveur où il reste sous votre contrôle direct.
localStorage et sessionStorage
localStorage et sessionStorage sont relativement nouvelles Api (le sens, et non tous les anciens navigateurs soutien) et sont quasi identiques (à la fois dans les Api et les capacités), à la seule exception de la persistance. sessionStorage (comme son nom l'indique) est disponible uniquement pour la durée de la session du navigateur (et est supprimé lorsque l'onglet ou la fenêtre est fermée) - il n'a, cependant, survivre page est rechargée (source DOM de Stockage guide de l' - Mozilla Developer Network).
Clairement, si les données que vous stockez doit être disponible sur une base continue ensuite localStorage est préférable de sessionStorage - même si vous devriez noter que les deux peuvent être compensés par l'utilisateur de sorte que vous ne devriez pas compter sur la persistance des données dans les deux cas.
localStorage et sessionStorage sont parfaits pour la persistance des données non sensibles nécessaires à l'intérieur de scripts client entre les pages (par exemple: les préférences, les scores dans les jeux). Les données stockées dans le localStorage et sessionStorage peut facilement être lu ou modifié à partir du client/navigateur ne devrait donc pas être invoqué pour le stockage de données sensibles ou liées à la sécurité des données dans les applications.
Cookies
Cela est également vrai pour les cookies, ceux-ci peuvent être trivialement altéré par l'utilisateur, et les données peuvent également être lu en texte brut, donc si vous êtes désireux de stocker des données sensibles alors que la session est vraiment votre seule option. Si vous n'êtes pas à l'aide de SSL, les informations de cookie peut également être interceptés en transit, en particulier sur un wifi ouvert.
Sur le côté positif des cookies peut avoir un degré de protection est appliquée à partir des risques de sécurité de type Cross-Site Scripting (XSS)/injection de Script en paramètre HTTP d'un seul drapeau qui signifie moderne (soutenir) les navigateurs empêchent l'accès à l'utilisation des cookies et des valeurs à partir de JavaScript (cela permettra également d'éviter votre propre, légitime, JavaScript d'y accéder). Ceci est particulièrement important avec les cookies d'authentification, qui sont utilisés pour stocker un jeton contenant les détails de l'utilisateur qui est connecté sur - si vous avez une copie de ce cookie alors pour toutes fins utiles, vous devenir que l'utilisateur autant que l'application web est concerné, et d'avoir accès aux mêmes données et les fonctionnalités de l'utilisateur.
Que les cookies sont utilisés à des fins d'authentification et de la persistance des données de l'utilisateur, tous cookies valable pour une page sont envoyés à partir du navigateur vers le serveur pour chaque demande pour le même domaine - ce qui inclut la page d'origine de la demande, les requêtes Ajax, toutes les images, feuilles de style, scripts, et les polices. Pour cette raison, les cookies ne doivent pas être utilisés pour stocker de grandes quantités d'informations. Le navigateur peut également imposer des limites sur la taille des informations qui peuvent être stockées dans les cookies. Généralement, les cookies sont utilisés pour stocker l'identification des jetons d'authentification, de session, et de la publicité de suivi. Les jetons ne sont généralement pas lisible par l'homme de l'information dans et d'eux-mêmes, mais identifiants cryptés lié à votre application ou base de données.
localStorage vs sessionStorage vs Cookies
En termes de capacités, les cookies, sessionStorage, et localStorage seulement vous permettent de stocker des chaînes de caractères, il est possible de convertir implicitement des valeurs primitives lors de la configuration (celles-ci devront être converties à utiliser comme leur type après la lecture), mais pas des Objets ou des Tableaux (il est possible de JSON serialise à les stocker à l'aide de l'Api). Stockage de Session seront généralement vous permettre de stocker toutes les primitives ou des objets pris en charge par votre Serveur de Côté le langage/framework.
Côté Client /Server-side
Que HTTP est un protocole sans état - d'applications web n'ont aucun moyen d'identification d'un utilisateur à partir de ses précédentes visites sur le retour à la site web - les données de session généralement repose sur un cookie jeton d'identification de l'utilisateur pour les visites répétées (bien que rarement des paramètres d'URL peut être utilisé pour le même but). Les données ont généralement un glissement heure d'expiration (à renouveler chaque fois que l'utilisateur visite), et en fonction de votre serveur/cadre de données seront stockées dans-processus (sens de perte de données si le serveur web se bloque ou est redémarré) ou à l'extérieur dans un état de serveur ou de données. Ceci est également nécessaire lors de l'utilisation d'une batterie de serveurs web (plus d'un serveur pour un site donné).
Que les données de session est complètement contrôlé par votre application (côté serveur) c'est le meilleur endroit pour quoi que ce soit sensible ou sécurisé dans la nature.
L'inconvénient de données côté serveur est à l'évolutivité de ressources de serveur pour chaque utilisateur pour la durée de la session, et que toutes les données nécessaire côté client doit être envoyé avec chaque demande. Tant que le serveur n'a aucun moyen de savoir si un utilisateur accède à un autre site ou ferme son navigateur, les données de session expire après un temps donné, pour éviter toutes les ressources du serveur d'être repris par abandonnés les sessions. Lors de l'utilisation des données de session, vous devez, par conséquent, être conscient de la possibilité que les données ont expiré et a été perdu, en particulier sur les pages avec de longs formulaires. Il sera également perdu si l'utilisateur supprime les cookies ou les commutateurs navigateurs/périphériques.
Certains frameworks web/les développeurs utilisent caché HTML entrées de conserver des données à partir d'une page d'un formulaire à un autre pour éviter d'expiration de session.
localStorage, sessionStorage, et les témoins sont tous soumis à une "origine" des règles qui signifie que les navigateurs doivent empêcher l'accès à des données à l'exception du domaine que de définir les informations pour commencer.
Pour en savoir plus sur les clients des technologies de stockage de voir Plongée En Html 5.
sessionStorage
être supprimé lorsque la fenêtre est fermé, ou l'onglet?sessionStorage
se prolonge jusqu'à la session du navigateur.sessionStorage
persiste à travers la durée de vie de la session du navigateur (similaire à un par-cookie de session). Vous pouvez le tester en ouvrant la console, et de fixer unesessionStorage
point, et la fermeture de l'onglet (pas le navigateur), puis en remontant vers le même site et en regardant lasessionStorage
objet.localStorage
vsdocument.cookie
: que le cookie sera envoyé avec chaque requête au serveur. Je viens de terminer une application qui utilise des cookies pour enregistrer les résultats du questionnaire, mais comme je n'ai pas besoin de les voir côté serveur, je pourrais/devrais l'avoir sauvé dans localStorage pour alléger ma demande/temps de réponse un peu. Également bon de savoir quelocalStorage
pouvez également stocker JS primitives alors que les cookies ne stocker des chaînes de caractères.In terms of capabilities, cookies only allow you to store strings. sessionStorage and localStorage allow you to store JavaScript primitives
. J'ai essayé de stocker différents types de données primitifs (par exemple, string, number, boolean dans les cookies. Ils sont tous enregistrés dans les cookies comme des chaînes de caractères. Comment est-ce un défaut ou une différence de comportement par rapport à localStorage ou sessionStorage. J'ai aussi conservé une variable booléenne ayant une valeurtrue
dans localStorage mais quand je l'ai récupéré dans une autre variable et n'atypeof
puis il dit aussistring
. Donc, même localStorage utilise des chaînes.LocalStorage
Pros:
Contre:
Les Cookies
Pour:
Contre:
Les données sont envoyées vers le serveur à chaque requête HTTP (HTML, images, JavaScript, CSS, etc) - l'augmentation de la quantité de trafic entre le client et le serveur.
Généralement, les suivants sont permis:
sessionStorage
Pour:
localStorage
.Contre:
localStorage
, tt fonctionne sur de même la politique de l'origine. Ainsi, les données enregistrées ne seront disponibles que sur la même origine.OK, LocalStorage comme il est appelé local de stockage pour vos navigateurs, il peut enregistrer jusqu'à 10 MO, SessionStorage fait la même chose, mais comme son nom l'dit, c'est une session et sera supprimé après la fermeture de votre navigateur, peut aussi vous faire économiser de moins de LocalStorage, comme jusqu'à 5MO, mais Cookies sont très minuscules stockage des données dans votre navigateur, qui peut économiser jusqu' 4KO et peut être consulté via le serveur ou le navigateur à la fois...
J'ai également créé l'image ci-dessous pour afficher un aperçu des différences:
Ce sont des propriétés de la "fenêtre" de l'objet en JavaScript, tout comme document fait partie d'une propriété de l'objet window qui détient les objets DOM.
De Stockage de Session propriété maintient une zone de stockage séparée pour chaque origine qui est disponible pour la durée de la page session je.e tant que le navigateur est ouvert, y compris la page se recharge et restaure.
Local de Stockage fait la même chose, mais persiste même lorsque le navigateur est fermé et rouvert.
Vous pouvez définir et récupérer les données stockées comme suit:
De même pour le localStorage.
sessionStorage
même un nouvel onglet est une nouvelle fenêtre. Donc tout ce qui est stocké pour un domaine spécifique dans un onglet ne sera pas disponible à même domaine dans l'onglet suivant.Le Web API de Stockage fournit des mécanismes par lesquels les navigateurs peuvent stocker de manière sécurisée les paires clé/valeur, d'une manière beaucoup plus intuitive de la mode que d'utiliser des cookies.
Le Web API de Stockage étend le
Window
l'objet avec les deux nouvelles propriétés —Window.sessionStorage
etWindow.localStorage
. — invoquer l'une de ces va créer une instance de l'objet de Stockage, à travers les éléments de données peuvent être définis, récupérées et éliminées. Un autre objet de Stockage est utilisé pour lesessionStorage
etlocalStorage
pour chaque origine (domaine).Objets de stockage sont simples clé-valeur magasins, semblables à des objets, mais ils restent intactes lors du chargement de la page.
Les clés et les valeurs sont toujours des chaînes de. Pour stocker n'importe quel type
convertir en String
puis de les stocker. Il est toujours recommandé d'utiliserinterface de Stockage
méthodes.Les deux mécanismes de Stockage Web sont comme suit:
La maximum d'espace de stockage disponible est différente par navigateur, mais la plupart des navigateurs ont mis en œuvre au moins le w3c recommandé limite maximale de stockage de 5MO.
Toujours attraper LocalStorage la sécurité et le quota est dépassé erreurs
QuotaExceededError: Lorsque les limites de stockage dépasse sur cette fonction
window.sessionStorage.setItem(key, value);
, il jette à un "QuotaExceededError" exception DOMException si la nouvelle valeur ne peut pas être réglé. (Paramètre pourrait échouer si, par exemple, l'utilisateur a désactivé le stockage pour le site, ou si le quota a été dépassé).DOMException.QUOTA_EXCEEDED_ERR est de 22, exemple violon.
SecurityError :
Uncaught SecurityError: l'Accès à des "localStorage" est refusé pour ce document
.StorageEvent « Le stockage de l'événement est ouvert le feu sur un document de la Fenêtre de l'objet lorsqu'une zone de stockage des changements. Lorsqu'un agent utilisateur est d'envoyer un stockage de notification pour un Document, l'agent utilisateur doit une tâche de la file d'attente pour déclencher un événement nommé stockage à l'objet Document l'objet de la Fenêtre, à l'aide de StorageEvent.
Écouter le stockage de l'événement sur les dom/Fenêtre pour attraper les changements dans le stockage. violon.
Cookies (cookie, cookie du navigateur) les Cookies sont des données, stockées dans de petits fichiers texte que les paires nom-valeur, sur votre ordinateur.
De nouveaux cookies peuvent également être créés à l'aide de JavaScript à l'aide de Document.témoin de la propriété, et si le drapeau HttpOnly n'est pas définie, les cookies existants peuvent être accessibles à partir de JavaScript.
Les Cookies sont souvent utilisés dans une application web permettant d'identifier un utilisateur et de leur session authentifiée
Lors de la réception d'une requête HTTP, un serveur peut envoyer un Set-Cookie en-tête de la réponse. Le cookie est stocké par le navigateur, puis le cookie est envoyé avec les demandes effectuées sur le même serveur à l'intérieur d'un Cookie en-tête HTTP.
Les cookies de Session sera supprimé lorsque le client est à l'arrêt. Ils ne spécifiez pas de l'Expiration ou de la Max-Age directives.
Cookies permanents expirent à une date spécifique (Expire) ou après une durée spécifique (Max-Age).
Le Cookie-tête de requête HTTP contient stockés les cookies HTTP préalablement envoyé par le serveur avec l'-tête Set-Cookie. HTTP-seulement les cookies ne sont pas accessibles via le JavaScript dans le Document.témoin de la propriété, le XMLHttpRequest et de la Demande d'Api afin d'atténuer les attaques contre les " cross-site scripting (XSS).
Cookies sont utilisés principalement pour trois raisons:
Les Cookies ont été inventés pour résoudre le problème de "comment se rappeler des informations sur l'utilisateur":
GitHubGist Exemple
Que sommaire,
Local de stockage: Il garde stocker les informations de l'utilisateur des données sans date d'expiration ces données ne seront pas supprimés lorsque l'utilisateur a fermé les fenêtres de navigateur, il sera disponible pour la journée, la semaine, le mois et l'année.
Dans le Local de stockage permet de stocker 5-10 mo de données hors connexion.
De Stockage de Session: C'est même comme stockage local de la date, à l'exception qu'il va supprimer toutes les fenêtres lorsque le navigateur windows fermé par un utilisateur du site web.
En Séance de stockage permet de stocker jusqu'à 5 mo de données de
Session: Une session est une variable globale stockée sur le serveur. Chaque session est attribué un identifiant unique qui est utilisé pour extraire des valeurs stockées.
Cookies: les Cookies sont des données, stockées dans de petits fichiers texte que les paires nom-valeur, sur votre ordinateur. Une fois qu'un cookie est défini, toutes les demandes de page qui suivent le retour le nom du cookie et la valeur.
LocalStorage:
De stockage sur le Web peut être considéré simplement comme une amélioration sur
les cookies, en apportant une plus grande capacité de stockage. Disponible de la taille est
5 MO qui beaucoup plus d'espace pour travailler avec d'un typique de 4KO
cookie.
Les données ne sont pas envoyées au serveur à chaque requête HTTP
(HTML, images, JavaScript, CSS, etc) - la réduction de la quantité de
le trafic entre le client et le serveur.
Les données stockées dans localStorage persiste jusqu'à leur suppression explicite.
Les modifications apportées sont enregistrées et disponibles pour tous les actuels et futurs
les visites sur le site.
Il fonctionne sur les mêmes-la politique de l'origine. Ainsi, les données enregistrées ne seront
disponible sur la même origine.
Cookies:
Nous pouvons définir le délai d'expiration pour chaque cookie
La 4K limite pour l'ensemble du cookie, y compris le nom, valeur, date d'expiration, etc. À l'appui de la plupart des navigateurs, garder le nom en vertu de 4000 octets, et l'ensemble du cookie de taille sous 4093 octets.
Les données sont envoyées vers le serveur à chaque requête HTTP (HTML, images, JavaScript, CSS, etc) - l'augmentation de la quantité de trafic entre le client et le serveur.
sessionStorage:
Changements ne sont disponibles que pour la fenêtre (ou onglet dans les navigateurs tels que google Chrome et Firefox). Les modifications apportées sont enregistrées et disponibles pour la page en cours, ainsi que de visites ultérieures sur le site sur la même fenêtre. Une fois que la fenêtre est fermée, le stockage est supprimé
Les données sont disponibles uniquement à l'intérieur de la fenêtre/onglet dans lequel elle a été créée.
Les données ne sont pas persistants, c'est à dire qu'il seront perdus une fois la fenêtre/onglet est fermé. Comme localStorage, il fonctionne sur la même politique d'origine. Ainsi, les données enregistrées ne seront disponibles que sur la même origine.