Qu'est-ce qu'un cookie
"Un cookie est une variable stockée dans l'ordinateur du visiteur. Ce cookie est envoyé chaque fois que le même ordinateur demande une page via le navigateur. Vous pouvez utiliser JavaScript pour créer et récupérer la valeur du cookie." - W3School
Un cookie est un fichier créé par un site Web visité et est utilisé pour stocker des informations de navigation, telles que les informations de profil.
Du point de vue de JavaScript, les cookies sont des informations de chaîne. Ces informations sont stockées dans l'ordinateur du client et sont utilisées pour transmettre des informations entre l'ordinateur client et le serveur.
Ces informations peuvent être lues ou définies via Document.cookie dans JavaScript. Étant donné que les cookies sont principalement utilisés pour communiquer entre le client et le serveur, en plus de JavaScript, le langage du serveur (tel que PHP) peut également accéder aux cookies.
Bases cookies
Les cookies ont des limites de taille. Les données stockées dans chaque cookie ne peuvent pas dépasser 4KB. Si la longueur de la chaîne de cookie dépasse 4KB, cette propriété renverra une chaîne vide.
Étant donné que les cookies sont finalement stockés dans l'ordinateur client sous forme de fichiers, il est très pratique de visualiser et de modifier les cookies, c'est pourquoi il est souvent dit que les cookies ne peuvent pas stocker des informations importantes.
Le format de chaque cookie est le suivant: <nom de cookie> = <value>; Le nom et la valeur doivent être des identifiants légaux.
Les cookies sont valables pendant la période. Par défaut, le cycle de vie d'un cookie se termine lorsque le navigateur se ferme. Si vous voulez que le cookie puisse utiliser une fois le navigateur désactivé, vous devez définir la période de validité du cookie, qui est la date d'expiration du cookie.
alert (typeof document.cookie) Le résultat est la chaîne. Je pensais que c'était un tableau, et j'ai fait des blagues ...
Les cookies ont le concept de domaine et de chemin. Le domaine est le concept de domaine. Étant donné que le navigateur est un environnement soucieux de la sécurité, différents domaines ne peuvent pas accéder aux cookies les uns des autres (bien sûr, vous pouvez obtenir un accès inter-domaines via des paramètres spéciaux). Le chemin est le concept de routage. Les cookies créés par une page Web ne sont accessibles que par toutes les pages Web dans le même répertoire ou sous-répertoire que cette page Web, mais ne sont pas accessibles par d'autres répertoires (cette phrase est un peu déroutante, elle sera facile à comprendre après un certain temps).
En fait, la façon de créer des cookies est quelque peu similaire à la façon de définir les variables, toutes deux nécessitent l'utilisation de noms de cookies et de valeurs de cookies. Plusieurs cookies peuvent être créés sur le même site Web, et plusieurs cookies peuvent être stockés dans le même fichier de cookies.
FAQ à biscuits
Il existe deux types de cookies:
Les cookies définis par le site Web actuel que vous parcourez
Les cookies tiers d'autres sources de domaine tels que l'intégration d'annonces ou d'images sur des pages Web (le site Web peut suivre vos informations d'utilisation en utilisant ces cookies)
Les connaissances de base viennent de mentionner le problème du cycle de vie d'un cookie. En fait, les cookies peuvent être à peu près divisés en deux états:
Cookies temporaires. Au cours du processus d'utilisation actuel, le site Web stockera des informations personnelles et les informations seront supprimées de l'ordinateur après la fermeture du navigateur.
Définit le cookie pour le temps d'expiration. Même si le navigateur est désactivé, l'industrie de l'information sera toujours dans l'ordinateur. Comme le nom de connexion et le mot de passe, il n'est pas nécessaire de se connecter à chaque fois que vous allez sur un site spécifique. Ce cookie peut être conservé sur l'ordinateur pendant plusieurs jours, des mois, voire des années
Il y a deux façons d'éliminer les cookies:
Cookies clairs via des outils de navigateur (il existe des outils tiers, et le navigateur lui-même a également cette fonction)
Effacer les cookies en fixant la période de validité des cookies
Remarque: la suppression des cookies peut parfois entraîner la fonctionnalité de certaines pages Web correctement
Les navigateurs peuvent accepter et refuser l'accès aux cookies via les paramètres.
Pour des raisons fonctionnelles et de performances, il est recommandé de minimiser le nombre de cookies utilisés et d'utiliser les petits cookies autant que possible.
Des détails sur l'encodage des cookies seront introduits séparément dans l'article Advanced Cookie.
S'il s'agit d'une page sur le disque local, la console Chrome ne peut pas utiliser JavaScript pour lire et écrire des cookies. La solution est ... changez un navigateur ^ _ ^.
Utilisation de base des cookies
1. Opérations d'accès simples
Lorsque vous accédez aux cookies à l'aide de JavaScript, vous devez utiliser l'attribut cookie de l'objet document; Une ligne de code présente comment créer et modifier un cookie:
La copie de code est la suivante:
document.cookie = 'username = darren';
Dans le code ci-dessus, «Nom d'utilisateur» représente le nom du cookie et «Darren» représente la valeur correspondant à ce nom. En supposant que le nom du cookie n'existe pas, alors un nouveau cookie est créé; S'il existe, la valeur correspondant au nom du cookie est modifiée. Si vous souhaitez créer des cookies plusieurs fois, utilisez simplement cette méthode à plusieurs reprises.
2. Fonctionnement de la lecture des cookies
Il est en fait très simple de lire avec précision les cookies, ce qui doit fonctionner sur les chaînes. Copiez ce code sur W3School pour analyser:
La copie de code est la suivante:
fonction getcookie (c_name) {
if (document.cookie.length> 0) {// Vérifiez d'abord si le cookie est vide, s'il est vide, retournez ""
c_start = document.cookie.indexof (c_name + "=") // Vérifiez si ce cookie existe via indexof () de l'objet String. S'il n'existe pas, c'est -1
if (c_start! = - 1) {
c_start = c_start + c_name.length + 1 // Le dernier +1 signifie réellement le nombre "=", de sorte que la position de début de la valeur cookie est obtenue
c_end = document.cookie.indexof (";", c_start) // En fait, quand j'ai vu le deuxième paramètre d'index (), je suis soudain devenu un peu étourdi. Plus tard, je me suis souvenu qu'il indique la position d'index de départ spécifiée ... Cette phrase consiste à obtenir la position finale de la valeur. Parce qu'il est nécessaire de déterminer s'il s'agit du dernier élément, il est jugé par si le ";" le nombre existe.
if (c_end == - 1) c_end = document.cookie.length
return Unescape (document.cookie.substring (c_start, c_end)) // La valeur est obtenue via substring (). Si vous voulez comprendre Unescape (), vous devez d'abord savoir ce que fait Escape (). Ce sont tous des bases très importantes. Si vous voulez savoir, vous pouvez le rechercher. Les détails de l'encodage des cookies seront également expliqués à la fin de l'article.
}
}
retour ""
}
Bien sûr, il existe de nombreuses façons de mettre en œuvre des cookies, tels que des tableaux, des régularités, etc., donc je ne vais pas entrer dans les détails ici.
3. Réglez la période de validité des cookies
Le cycle de vie des cookies qui apparaissent souvent dans les articles est la période de validité et la période d'expiration, c'est-à-dire le moment où les cookies existent. Par défaut, les cookies seront automatiquement effacés lorsque le navigateur sera fermé, mais nous pouvons définir la période de validité des cookies via Expires. La syntaxe est la suivante:
La copie de code est la suivante:
document.cookie = "name = valeur; expires = date";
La valeur de date dans le code ci-dessus est une chaîne de type date au format GMT (Greenwich Time), et la méthode de génération est la suivante:
La copie de code est la suivante:
var _date = new Date ();
_date.setDate (_date.getDate () + 30);
_date.togmTString ();
Les trois lignes de code ci-dessus sont divisées en plusieurs étapes:
Générer une instance de date via nouveau pour obtenir l'heure actuelle;
La méthode getDate () obtient une journée dans le mois local actuel, puis ajoute 30, ce qui signifie que j'espère que ce cookie pourra être sauvé localement pendant 30 jours;
Définissez ensuite l'heure via la méthode setDate ();
Enfin, utilisez la méthode togmTstring () pour convertir l'objet de date en une chaîne et renvoyer le résultat
La fonction complète suivante illustre les points auxquels nous devons prêter attention lors de la création de cookies. Créez une fonction qui stocke les informations dans un cookie:
La copie de code est la suivante:
fonction setcookie (c_name, valeur, expireds) {
var exDate = new Date ();
exdate.setDate (exDate.getDate () + Expiredays);
document.cookie = c_name + "=" + Escape (valeur) + ((expiredays == null)? "": "; expires =" + exDate.togmTString ());
}
// Méthode d'utilisation: Setcookie («nom d'utilisateur», «Darren», 30)
Maintenant, notre fonction définit l'heure valide du cookie en fonction du nombre de jours. Si vous souhaitez le définir dans d'autres unités (telles que: heures), modifiez la troisième ligne de code:
La copie de code est la suivante:
exDate.Sethours (exDate.Gethours () + Expiredays);
De cette façon, la période de validité des cookies sera basée sur des heures.
Il existe deux façons de nettoyer les cookies dans la FAQ. Maintenant, nous voulons dire que les cookies sont invalidés en définissant la période de validité à une période expirée. Puisqu'il existe une méthode pour fixer la date d'expiration, veuillez demander aux amis intéressés de le faire vous-même ^ _ ^. Continuons avec le sujet plus profond des cookies ci-dessous.
Cookie avancé
Concept de chemin One.cookie
Dans les bases, il y a une mention du concept de cookies ayant des domaines et des chemins. Maintenant, présentons le rôle des chemins dans les cookies.
Les cookies sont généralement créés car les utilisateurs accèdent à la page, mais ce cookie n'est pas accessible uniquement sur la page où le cookie est créé.
Par défaut, seules les pages Web dans le même répertoire ou sous-répertoire que la page qui a créé le cookie est accessible. Cela est dû à des considérations de sécurité, toutes les pages ne peuvent pas accéder aux cookies créés par d'autres pages à volonté. Par exemple:
Créez un cookie sur la page "//www.vevb.com/darren_code/", puis la page sous le chemin "/ darren_code /" tel que: "//www.vevb.com/darren_code/archive/2011/11/07/cookie.html" peut obtenir des informations sur les cookies par défaut.
Par défaut, "//www.vevb.com" ou "//www.vevb.com/xxxx/" ne peut pas accéder à ce cookie (il est inutile de simplement le regarder, pratiquer la vérité ^ _ ^).
Alors, comment rendre ce cookie accessible à d'autres répertoires ou répertoires parents, vous pouvez y parvenir en définissant le chemin du cookie. Les exemples sont les suivants:
La copie de code est la suivante:
document.cookie = "name = valeur; path = path"
document.cookie = "name = valeur; expires = date; path = path"
Le chemin de la police rouge est le chemin du cookie. L'exemple le plus courant est de laisser le cookie être dans le répertoire, afin que quelle que soit la sous-page créée, toutes les pages sont accessibles:
La copie de code est la suivante:
document.cookie = "name = darren; path = /";
Concept de domaine deux.cookie
Le chemin peut résoudre le problème de l'accès aux cookies dans le même domaine. Continuons à parler du problème de l'accès aux cookies entre le même domaine. La syntaxe est la suivante:
La copie de code est la suivante:
document.cookie = "name = value; path = path; domain = domain";
Le domaine rouge est la valeur de l'ensemble de champ de cookies.
Par exemple, "www.qq.com" et "sports.qq.com" partagent un nom de domaine connexe "qq.com". Si nous voulons que le cookie sous "Sports.qq.com" soit accessible par "www.qq.com", nous devons utiliser l'attribut de domaine du cookie et définir l'attribut de chemin à "/". exemple:
La copie de code est la suivante:
document.cookie = "username = darren; path = /; domain = qq.com";
Remarque: il est définitivement un accès entre le même domaine, et la valeur du domaine ne peut pas être définie sur un nom de domaine qui n'est pas le domaine principal.
TROIS SÉCURITÉ DE COOKIE
Habituellement, les informations sur les cookies sont utilisées pour transmettre des données à l'aide de connexions HTTP. Cette méthode de livraison est facile à visualiser, de sorte que les informations stockées dans les cookies sont facilement volées. Si le contenu livré dans le cookie est plus important, une transmission de données cryptée est requise.
Par conséquent, le nom de cet attribut du cookie est "sécurisé" et la valeur par défaut est vide. Si l'attribut d'un cookie est sécurisé, les données sont transmises entre l'informatique et le serveur via HTTPS ou d'autres protocoles de sécurité. La syntaxe est la suivante:
La copie de code est la suivante:
document.cookie = "username = darren; sécurisé"
La définition des cookies pour sécuriser garantit uniquement que le processus de transmission des données entre les cookies et le serveur est crypté, tandis que le fichier de cookies stocké localement n'est pas crypté. Si vous voulez que les cookies locaux soient chiffrés, vous devez crypter vous-même vos données.
Remarque: Même si l'attribut sécurisé est défini, cela ne signifie pas que d'autres ne peuvent pas voir les informations sur les cookies enregistrées localement sur votre machine, donc après tout, ne mettez pas des informations importantes sur les cookies, ...
Four.cookie Encoding Détails
Je voulais à l'origine présenter les connaissances du codage des cookies dans la section FAQ, car si je ne comprends pas cela, le problème de codage est en effet un piège, donc j'en parlerai en détail.
Lorsque vous saisissez des informations sur les cookies, vous ne pouvez pas inclure des symboles spéciaux tels que des espaces, des demi-colons, des virgules, etc., et en général, le stockage des informations sur les cookies est de manière non codée. Par conséquent, avant de définir des informations sur les cookies, vous devez d'abord utiliser la fonction Escape () pour coder les informations sur la valeur des cookies, et lorsque vous obtenez la valeur des cookies, utilisez la fonction UNESCAPE () pour convertir la valeur. Si vous définissez des cookies:
La copie de code est la suivante:
document.cookie = name + "=" + Escape (valeur);
Jetons un coup d'œil à la phrase dans getcookie () mentionnée dans l'usage de base:
La copie de code est la suivante:
return Unescape (document.cookie.substring (c_start, c_end));
De cette façon, vous n'avez pas à vous soucier de l'erreur d'information sur les cookies car un symbole spécial apparaît dans la valeur des cookies.
Code personnel
La copie de code est la suivante:
/ * Définir des cookies * /
fonction setcookie (c_name, valeur, expiredays, path, domaine, sécurisé) {
var exDate = new Date (); // Obtenez l'heure actuelle
exDate.setDate (exDate.getDate () + Expireds); // Temps d'expiration
document.cookie = c_name + "=" + // nom de cookie
Escape (valeur) + // Encoder la valeur des cookies
((expiredays == null)? "": "; expires =" + exdate.togmtString ()) + // Définir le temps d'expiration
((path == null)? '/': '; path =' + path) + // définir le chemin d'accès
((domaine == null)? '': '; domaine =' + domaine) + // Définissez le domaine d'accès
((sécurisé == null)? '': '; sécurisé =' + sécurisé); // Définissez si pour crypter ou non
};
setcookie ('test', 'name = sheng; sexe = hommes; lancer = Dullbear', 30);
setcookie ('bb', 'name = sheng; sex = men', 30);
/ * Obtenir des cookies * /
fonction getcookie (c_name, index) {
var cookies = document.cookie; // Obtenez la valeur des cookies
var cookielen = cookies.length; // Obtenez la longueur des cookies
if (cookielen> 0) {// lorsque le cookie n'est pas vide
var c_start = cookies.indexof (c_name + '='); // Trouvez le numéro de série requis pour la valeur des cookies dans le cookie
if (c_start> -1) {// lorsque la valeur cookie existe
c_start + = c_name.length + 1; // Obtenez le numéro de séquence de démarrage de la valeur des cookies
var c_end = cookies.indexof (';', c_start); // Obtenez le numéro de séquence final de la valeur des cookies
if (c_end == -1) {// lorsque le cookie est le dernier
c_end = cookielen; // définit le numéro de séquence final de la valeur des cookies sur la longueur des cookies
};
var Cookiestr = unEscape (cookies.substring (c_start, c_end)); // Obtenez la valeur des cookies décodés
var cookieoBj = Cookiestr.split (';'); // Valeur de cookies divisée
index = ((index == null)? 0: index); // juger si l'index est transmis à une valeur
var butoBj = cookieoBj [index]; // Tableau d'index
var buttr = butoBj.split ('=');
var getcook = buttr [1]; // Obtenez la valeur des cookies qui doit être obtenue
return getcook;
};
} autre {
console.log («la page n'a pas de cookies»);
}
};
alert (getcookie ('test', 0)); // Imprimer la valeur des cookies de requête