Heim >Web-Frontend >js-Tutorial >In JavaScript werden Cookies verwendet
Cookie ist ein Datenelement, das vom Server an den Browser gesendet wird, nachdem der Browser auf den Server zugreift. Cookies sind Teil des HTTP-Protokolls. Wenn der Client zum ersten Mal eine Anfrage an den Server sendet, sendet der Server ein Cookie an den Client, um einige Informationen zu speichern Der Server ergreift entsprechende Maßnahmen, indem er das Cookie des Clients identifiziert. Wenn wir uns beispielsweise auf einer Website anmelden, zeichnet die Website unseren Benutzernamen und unser Passwort auf, sodass wir uns direkt anmelden können, ohne beim nächsten Anmelden unseren Benutzernamen und unser Passwort eingeben zu müssen.
Der Webserver erstellt ein Cookie, indem er einen Set-Cookie-Nachrichtenheader sendet. Der Set-Cookie-Nachrichtenheader ist eine Zeichenfolge mit dem folgenden Format:
Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
NAME: Cookie-Name, value ist der Wert des Cookie-Sets.
Läuft ab: Bestimmen Sie das Ablaufdatum des Cookies, geben Sie an, wann das Cookie nicht mehr an den Server gesendet wird, und der Browser löscht das Cookie nach dieser angegebenen Zeit. Der DATE-Attributwert muss in einem bestimmten Format vorliegen: Wdy (Wochentag), Datum-Monat-Jahr HH:MM:SS GMT. Wenn er nicht in diesem Format vorliegt, wird er nicht erkannt. Wenn die Option „Ablauf“ nicht festgelegt ist, ist der Lebenszyklus des Cookies auf die aktuelle Sitzung beschränkt und die Cookie-Datei verschwindet automatisch, wenn der Browser geschlossen wird.
Pfad: Steuert den Zeitpunkt des Sendens des Cookie-Headers. Der Webserver sendet den Cookie-Header nur, wenn der durch Path angegebene Pfad in der vom Benutzer angeforderten Ressourcen-URL vorhanden ist. Wenn der Pfadteil der vom Benutzer eingegebenen URL die durch das Path-Attribut definierte Zeichenfolge ab dem ersten Zeichen enthält, geht der Browser im Allgemeinen davon aus, dass die Prüfung bestanden wurde. Wenn der Wert des Path-Attributs „/“ ist, können alle WWW-Ressourcen auf dem Webserver das Cookie lesen. Wenn die Pfadoption nicht festgelegt ist, ist der Attributwert „Pfad“ standardmäßig der Pfadname der Ressource, die vom Webserver an den Browser übergeben wurde.
Domäne: Bestimmen Sie, welche Webserver in der Internetdomäne die vom Browser aufgerufenen Cookies lesen können, d. h. nur Seiten dieser Domäne können die Informationen in den Cookies verwenden. Wenn die Option „Domäne“ nicht festgelegt ist, wird der Cookie-Attributwert auf den Domänennamen des Webservers festgelegt.
需要注意的是,只有在 domain 选项核实完毕之后才会对 path 属性进行比较。
SICHER: Nur Flag ohne Wert. Ein Cookie mit der sicheren Option kann nur dann an den Server gesendet werden, wenn eine Anfrage über SSL oder HTTPS erfolgt. Zeigt an, dass der Browser nur dann das entsprechende Cookie an den Server sendet, wenn das Kommunikationsprotokoll zwischen dem Browser und dem Webserver ein Verschlüsselungsauthentifizierungsprotokoll ist.
In JavaScript werden Cookies verwendet, um den Status zu speichern und einen Identifizierungsmechanismus für Webbrowser bereitzustellen. In JavaScript können wir Cookies über die Eigenschaft document.cookie erstellen, verwalten und löschen.
Cookies setzen:
document.cookie="userName = mavis ";
Jedes Cookie ist ein Name/Wert-Paar. Wenn Sie mehrere Name/Wert-Paare gleichzeitig festlegen möchten, können Sie die folgende Methode verwenden:
document.cookie = "userName=mavis; userId = 023";
Verwenden Sie in Cookies die Funktion escape() zur Codierung, die einige Sonderzeichen hexadezimal ausdrücken kann. Zu den Sonderzeichen gehören Semikolon (;), Komma (,), Gleichheitszeichen (=) und Leerzeichen usw. Nachdem Sie jedoch die Escape()-Codierung verwendet haben, müssen Sie unescape() zum Decodieren verwenden, nachdem Sie den Wert herausgenommen haben, um den ursprünglichen Cookie-Wert zu erhalten.
Die Funktion escape() in JavaScript kann einen String so kodieren, dass der String auf allen Computern gelesen werden kann. Die Syntax lautet wie folgt: escape(string), string ist die Zeichenfolge, die maskiert oder codiert werden soll.
Den Wert des Cookies abrufen:
Verwenden Sie document.cookie, um direkt eine Zeichenfolge zu erhalten, die aus mehreren durch Semikolons getrennten Namen/Werten besteht. Diese Name/Wert-Paare umfassen alle Cookies unter diesem Domainnamen.
var myCookie = document.cookie;
Den angegebenen Cookie-Wert abrufen,
//设置两个cookie document.cookie = "userName=mavis"; document.cookie = "userId = 023"; //获取cookie字符串 var myCookie = document.cookie; var arrCookie = myCookie.split(";"); var userName; for(var i = 0;i < arrCookie.length;i++){ var myArr = arrCookie[i].split("="); //找到名称为userName的cookie,并返回值 if(userName = myArr[0]){ userName = myArr[1]; break; } } alert("welcome " + userName);
Cookie-Ablaufdatum festlegen:
Wenn wir uns zum ersten Mal auf einer Website anmelden, ist unsere ID dort Die Website erinnert Sie daran, ob die ID und das Passwort gespeichert werden sollen. In JavaScript legen Sie tatsächlich ein Ablaufdatum für das Cookie fest:
document.cookie = "userId = 023; expiress = GMT_String";
Diese Anweisung setzt das UserId-Cookie auf die durch GMT_String dargestellte Ablaufzeit Wird diese Zeit überschritten, verschwindet das Cookie und ist nicht mehr abrufbar. Stellen Sie den Cookie-Wert so ein, dass er nach 30 Tagen abläuft:
//获取当前时间 var date=new Date(); var expiresDays=30; //将date设置为30天以后的时间 date.setTime(date.getTime()+expiresDays*24*3600*1000); //将userId和userName两个cookie设置为30天后过期 document.cookie = "userId = 023; userName = mavis; expires = " + date.toGMTString();
Auf diese Weise kann das UserId-Cookie gelöscht werden.
Geben Sie den Pfad an, über den auf Cookies zugegriffen werden kann: Geben Sie ihn an, indem Sie das Pfadattribut festlegen.
//指定可访问该cookie的目录 document.cookie = "name = mavis; path = cookiePath" //在整个网站都可访问 document.cookie = "name = mavis; path = /"
Geben Sie den Hostnamen an, über den auf Cookies zugegriffen werden kann: Der Hostname bezieht sich auf verschiedene Hosts unter demselben Domäne, ein Host Auf die in erstellten Cookies kann nicht unter einem anderen Host zugegriffen werden, sie können jedoch über den Domänenparameter gesteuert werden.
Zum Beispiel: document.cookie="name=value;domain=.baidu.com"; Diese Einstellung ermöglicht allen Hosts unter Baidu den Zugriff auf das Cookie.
Ein Beispiel:
function getCookie(name){ if (document.cookie.length>0){ start=document.cookie.indexOf(name + "=") if (start!=-1){ start=start + name.length+1 end=document.cookie.indexOf(";",start) if (end==-1) end=document.cookie.length return unescape(document.cookie.substring(start,end)) } } return "" } function setCookie(name,value,expiredays){ var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } setCookie("username","tank",1800); //设置cookie的值,生存时间半个小时 alert(getCookie('test')); //取得cookie的值,显示tank
Aber beim Ausführen ist ein Problem aufgetreten und es kann in meinem Chrome-Browser nicht angezeigt werden:
Deshalb habe ich online die folgenden Gründe überprüft: Der Chrome-Browser hat Einschränkungen für Cookies, aber die Cookies, die ich für den Chrome-Browser gesetzt habe, waren auf „Setzen lokaler Daten zulassen“ eingestellt, aber es hat immer noch nicht funktioniert. Wer diesen Artikel liest, kann mir sagen, warum das so ist? Ich kann Ihnen nicht genug danken.
wird im Edge-Browser wie folgt angezeigt: