Cookies, stockage local et stockage de session
Ceci est l'article n°6 de la série de questions d'entretien Frontend. Si vous souhaitez améliorer votre préparation ou rester à jour en général, pensez à vous inscrire au Frontend Camp.
Les cookies, le stockage local et le stockage de session sont tous utilisés pour stocker des données côté client. Ces mécanismes sont particulièrement utiles pour stocker des jetons d'authentification ou des états réservés aux clients, tels que des thèmes ou des paramètres personnalisés. Les trois types de stockage partagent les caractéristiques suivantes :
- Ils stockent les données sous forme de paires clé-valeur.
- Toutes les valeurs sont stockées au format chaîne. Si une valeur n'est pas une chaîne, elle est sérialisée avant d'être stockée.
- Les données stockées dans ces mécanismes sont accessibles au client (sauf les cookies HttpOnly).
Cookies
Les cookies ne peuvent pas stocker de grandes quantités de données ; leur stockage est plafonné à environ 4 Ko par domaine. Cette limitation existe car les cookies sont automatiquement envoyés au serveur à chaque demande effectuée par le navigateur. Le stockage excessif de données côté client dans des cookies augmenterait la taille de la charge utile, ce qui aurait un impact négatif sur les performances.
Quels types de données devons-nous stocker dans les cookies ?
Les cookies sont idéaux pour stocker les données qui doivent être transmises au serveur, telles que les jetons d'authentification, les identifiants de session, les identifiants d'analyse et des informations similaires. De plus, les cookies permettent le partage de données entre différents onglets ou fenêtres du même domaine ou sous-domaine.
Vous pouvez configurer les cookies à l'aide de différents indicateurs pour modifier leur comportement ou renforcer la sécurité :
- HttpOnly garantit que les cookies sont inaccessibles via JavaScript côté client, atténuant ainsi le risque d'attaques XSS.
- maxAge/expires spécifie une date d'expiration pour le cookie. Si aucune date d'expiration n'est fixée, le cookie est supprimé à la fermeture du navigateur.
Vous voulez en savoir plus sur les indicateurs de cookies ? Consultez ma publication LinkedIn.
Contrairement au stockage local et au stockage de session, les cookies peuvent également être définis (lire : "ajoutés") par le serveur à l'aide de l'en-tête Set-Cookie.
// Set a cookie for the key `token` that `expires` on 1st March 2025. document.cookie = 'token=a1-b2-c3; expires=Sat, 1 Mar 2025 23:59:59 GMT; path=/'; // Read all cookies. There's no way to read specific cookies using `document.cookie`. // You have to parse the string yourself. console.log(document.cookie); // token=a1-b2-c3 // Delete the cookie with the key `token` by setting an // expiry date in the past. The value doesn't matter. document.cookie = 'token=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';
Stockage local
Contrairement aux cookies, localStorage offre une capacité de stockage nettement plus grande d'environ 5 Mo par domaine. En effet, localStorage est conçu pour stocker des données à long terme. Il conserve les données même lorsque le navigateur est fermé, ce qui le rend idéal pour les besoins de stockage persistants côté client.
Quel type de données devrions-nous alors stocker dans localStorage ?
localStorage est le mieux adapté pour stocker des données utilisées uniquement côté client et qui n'ont pas besoin d'être envoyées au serveur à chaque demande. Quelques exemples sont le thème d'un site Web ou de produits ajoutés au panier avant qu'un utilisateur ne se connecte.
Les données stockées dans localStorage persistent indéfiniment jusqu'à ce que l'utilisateur les supprime manuellement ou que le site Web les efface à l'aide de JavaScript.
Semblable aux cookies, les données de localStorage sont accessibles dans tous les onglets ou fenêtres de la même origine, ce qui les rend utiles pour partager l'état côté client au sein d'un domaine.
// Set a cookie for the key `token` that `expires` on 1st March 2025. document.cookie = 'token=a1-b2-c3; expires=Sat, 1 Mar 2025 23:59:59 GMT; path=/'; // Read all cookies. There's no way to read specific cookies using `document.cookie`. // You have to parse the string yourself. console.log(document.cookie); // token=a1-b2-c3 // Delete the cookie with the key `token` by setting an // expiry date in the past. The value doesn't matter. document.cookie = 'token=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';
Stockage des sessions
sessionStorage est utilisé pour stocker des données de courte durée côté client. Comme localStorage, il offre une capacité de stockage d'environ 5 Mo par domaine et partage la même API.
Bien que sessionStorage et localStorage partagent des fonctionnalités similaires, ils diffèrent sur deux aspects clés : Persistance des données et Accessibilité.
Contrairement à localStorage, sessionStorage ne conserve pas les données une fois l'onglet ou le navigateur fermé. De plus, les données stockées dans sessionStorage sont isolées dans l'onglet ou la fenêtre spécifique dans lequel elles ont été créées, ce qui signifie que les autres onglets ou fenêtres de la même origine ne peuvent pas y accéder.
Quel est alors le cas d’utilisation de sessionStorage ?
sessionStorage est idéal pour stocker les données nécessaires uniquement pour une seule session. Par exemple, imaginez qu’un utilisateur remplisse un long formulaire et actualise accidentellement la page. Si les données du formulaire sont stockées dans sessionStorage, elles persisteront jusqu'à l'actualisation, permettant à l'utilisateur de continuer sans perdre sa progression.
Cependant, il est important de noter que ces données ne seront pas accessibles dans un autre onglet ou une fois l'onglet fermé.
// Set a value in localStorage. localStorage.setItem('theme', 'dark'); // Get a value from localStorage. console.log(localStorage.getItem('theme')); // 'dark' // Remove a value from localStorage. localStorage.removeItem('theme'); // Clear all data in localStorage. localStorage.clear();
Bien que les cookies soient automatiquement inclus dans chaque requête envoyée par le navigateur, les données stockées dans localStorage ou sessionStorage peuvent être transmises manuellement au serveur en écrivant du code personnalisé.
Résumé
- Les cookies, localStorage et sessionStorage sont utilisés pour stocker des données côté client.
- Les cookies sont la seule forme de stockage qui peut également être définie par le serveur à l'aide de l'en-tête de réponse Set-Cookie.
- Les cookies sont automatiquement envoyés au serveur à chaque demande.
- localStorage et sessionStorage ont un stockage considérablement important (5 Mo) par rapport aux cookies (4 Ko). Ces deux stockages partagent la même interface API.
- Les cookies ont une date d'expiration, sinon ils sont effacés à la fermeture du navigateur.
- Les données localStorage persistent indéfiniment à moins qu'elles ne soient effacées manuellement par l'utilisateur ou le site Web lui-même.
- Les données de sessionStorage sont effacées après la fin de la session, c'est-à-dire lorsque l'onglet ou la fenêtre est fermé.
Vous aimez ce que vous venez de lire ? Pensez à consulter Frontend Camp ✌️
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Il existe trois façons courantes d'initier des demandes HTTP dans Node.js: utilisez des modules intégrés, Axios et Node-Fetch. 1. Utilisez le module HTTP / HTTPS intégré sans dépendances, ce qui convient aux scénarios de base, mais nécessite un traitement manuel de la couture des données et de la surveillance des erreurs, tels que l'utilisation de https.get () pour obtenir des données ou envoyer des demandes de post via .write (); 2.AXIOS est une bibliothèque tierce basée sur la promesse. Il a une syntaxe concise et des fonctions puissantes, prend en charge l'async / attendre, la conversion JSON automatique, l'intercepteur, etc. Il est recommandé de simplifier les opérations de demande asynchrones; 3.Node-Fetch fournit un style similaire à la récupération du navigateur, basé sur la promesse et la syntaxe simple

Les types de données JavaScript sont divisés en types primitifs et types de référence. Les types primitifs incluent la chaîne, le nombre, le booléen, le nul, un non défini et le symbole. Les valeurs sont immuables et les copies sont copiées lors de l'attribution des valeurs, de sorte qu'elles ne se affectent pas; Les types de référence tels que les objets, les tableaux et les fonctions stockent les adresses de mémoire, et les variables pointant vers le même objet s'afferchent mutuellement. Le typeof et l'instance de OFF peuvent être utilisés pour déterminer les types, mais prêtent attention aux problèmes historiques de typeofnull. Comprendre ces deux types de différences peut aider à écrire un code plus stable et fiable.

Dans JavaScript, vérifiez si un tableau contient une certaine valeur. La méthode la plus courante est Inclut (), qui renvoie une valeur booléenne et la syntaxe est Array.Cuecludes (ValueToFind), par exemple les fruits.Cuels («banane») Renvoie vrai; S'il doit être compatible avec l'ancien environnement, utilisez l'indexof (), comme nombres.indexof (20)! == - 1 Renvoie True; Pour les objets ou les données complexes, une méthode () doit être utilisée pour une comparaison approfondie, telles que les utilisateurs.Some (user => user.id === 1) renvoie true.

La portée de JavaScript détermine la portée d'accessibilité des variables, qui sont divisées en étendue globale, fonction et au niveau du bloc; Le contexte détermine la direction de cela et dépend de la méthode d'appel de fonction. 1. Les étendues incluent la portée globale (accessible n'importe où), la portée de la fonction (valide uniquement dans la fonction) et la portée au niveau du bloc (LET et const sont valides dans {}). 2. Le contexte d'exécution contient l'objet variable, la chaîne de portée et les valeurs de cela. Cela pointe vers global ou non défini dans la fonction ordinaire, l'appel de méthode pointe vers l'objet d'appel, le constructeur pointe vers le nouvel objet, et peut également être explicitement spécifié par appel / application / liaison. 3. La fermeture fait référence aux fonctions accédant et en se souvenant des variables de portée externes. Ils sont souvent utilisés pour l'encapsulation et le cache, mais peuvent provoquer

Pour obtenir la valeur de la boîte d'entrée HTML, le noyau consiste à trouver l'élément correspondant via l'opération DOM et à lire l'attribut de valeur. 1. Utilisez Document.GetElementByid pour être le moyen le plus direct. Après avoir ajouté un ID à l'entrée, vous pouvez obtenir l'élément et lire la valeur via cette méthode; 2. Utilisez QueySelector pour être plus flexible, et vous pouvez sélectionner des éléments en fonction d'attributs tels que le nom, la classe, le type, etc.; 3. Vous pouvez ajouter des auditeurs d'événements d'entrée ou de modification pour atteindre des fonctions interactives, telles que l'obtention du contenu d'entrée en temps réel; 4. Faites attention au synchronisation d'exécution du script, aux erreurs d'orthographe et au jugement nul, et assurez-vous que l'élément existe avant d'accéder à la valeur.

Il existe deux méthodes de base pour obtenir la valeur du bouton radio sélectionné. 1. Utilisez QuerySelector pour obtenir directement l'élément sélectionné, et utilisez l'entrée [name = "Votre nom-radio"]: Sélecteur vérifié pour obtenir l'élément sélectionné et lire son attribut de valeur. Il convient aux navigateurs modernes et a un code concis; 2. Utilisez Document.PetelementsByName pour traverser et trouver la première radio vérifiée via la boucle Nodelist et obtenir sa valeur, qui convient aux scénarios compatibles avec les anciens navigateurs ou nécessitent un contrôle manuel du processus; De plus, vous devez faire attention à l'orthographe de l'attribut de nom, à la gestion des situations non sélectionnées et à un chargement dynamique du contenu

Pour utiliser JavaScript pour créer un sandbox sable sécurisé iframe, utilisez d'abord l'attribut de bac à sable de HTML pour limiter le comportement IFRAME, tel que l'interdiction de l'exécution du script, des fenêtres contextuelles et de la soumission de formulaire; Deuxièmement, en ajoutant des jetons spécifiques tels que des scénaristes pour assouplir les autorisations au besoin; Combinez ensuite PostMessage () pour obtenir une communication inter-domaine sécurisée, tout en vérifiant strictement les sources et les données de messages; Enfin, évitez les erreurs de configuration courantes, telles que ne pas vérifier la source, ne pas configurer CSP, etc., et effectuer des tests de sécurité avant de se rendre en ligne.

Les chaînes de modèle sont une fonctionnalité introduite dans JavaScriptes6, qui enveloppe le contenu avec des backticks et prend en charge l'interpolation variable et les chaînes multiplices. 1. Utilisez des backtticks pour définir des chaînes telles que ce point de vue en ligne; 2. Insérer des variables ou des expressions via $ {} Syntaxe tels que IAM $ {Age} Yearsold.; 3. Soutenez naturellement le texte multi-lignes sans ajouter manuellement Newlines. Les scénarios courants incluent la génération de contenu HTML dynamiquement, la sortie de chaîne multi-lignes et les coutures logiques conditionnelles simplifiées. Les notes incluent éviter les attaques d'injection, l'utilisation avancée des modèles de balises et garder la logique simple.
