Was ist ein Keks
"Ein Cookie ist eine Variable, die auf dem Computer des Besuchers gespeichert ist. Dieser Cookie wird gesendet, wenn derselbe Computer eine Seite über den Browser fordert. Sie können JavaScript verwenden, um den Wert des Cookies zu erstellen und abzurufen." - W3school
Ein Cookie ist eine Datei, die von einer besuchten Website erstellt wurde und zum Speichern von Browsing -Informationen wie Profilinformationen verwendet wird.
Aus der Perspektive von JavaScript sind Cookies einige String -Informationen. Diese Informationen werden auf dem Computer des Clients gespeichert und werden verwendet, um Informationen zwischen dem Client -Computer und dem Server zu übergeben.
Diese Informationen können gelesen oder über document.cookie in JavaScript gelesen oder festgelegt werden. Da Cookies hauptsächlich zur Kommunikation zwischen dem Client und dem Server verwendet werden, kann neben JavaScript auch die Serversprache (wie PHP) auch auf Cookies zugreifen.
Keks -Grundlagen
Kekse haben Größengrenzen. Die in jedem Cookie gespeicherten Daten können 4 KB nicht überschreiten. Wenn die Länge der Cookie -Zeichenfolge 4 KB überschreitet, gibt diese Eigenschaft eine leere Zeichenfolge zurück.
Da Cookies letztendlich im Client -Computer in Form von Dateien gespeichert werden, ist es sehr bequem, Cookies anzuzeigen und zu ändern. Aus diesem Grund wird häufig gesagt, dass Cookies wichtige Informationen nicht speichern können.
Das Format jedes Cookies lautet wie folgt: <Cookie -Name> = <Wert>; Sowohl der Name als auch der Wert müssen rechtliche Kennungen sein.
Cookies sind für den Zeitraum gültig. Standardmäßig endet der Lebenszyklus eines Keks, wenn der Browser schließt. Wenn Sie möchten, dass der Cookie nach dem Ausschalten des Browsers verwenden kann, müssen Sie die Gültigkeitsdauer für den Keks einstellen, das das Ablaufdatum des Keks ist.
alert (typeof document.cookie) Das Ergebnis ist Zeichenfolge. Früher dachte ich, es sei ein Array, und ich machte Witze ...
Cookies haben das Konzept von Domain und Pfad. Domäne ist das Konzept der Domäne. Da es sich bei dem Browser um eine sicherheitsbewusste Umgebung handelt, können verschiedene Domänen nicht voneinander auf Cookies zugreifen (natürlich können Sie durch spezielle Einstellungen einen Cross-Domain-Zugriff erreichen). Der Weg ist das Konzept des Routings. Die von einer Webseite erstellten Cookies können nur von allen Webseiten in demselben Verzeichnis oder Unterverzeichnis wie diese Webseite zugegriffen werden, können jedoch nicht von anderen Verzeichnissen zugegriffen werden (dieser Satz ist etwas verwirrend, es ist nach einer Weile leicht zu verstehen).
Tatsächlich ist die Art und Weise, wie man Cookies erstellt, etwas ähnlich wie bei der Definition von Variablen, beide erfordern die Verwendung von Cookie -Namen und Cookie -Werten. Auf derselben Website können mehrere Cookies erstellt werden, und mehrere Cookies können in derselben Cookie -Datei gespeichert werden.
FAQ Cookie
Es gibt zwei Arten von Keksen:
Die von der aktuellen Website festgelegten Cookies, die Sie durchsuchen
Cookies von Drittanbietern aus anderen Domänenquellen wie Einbetten von Anzeigen oder Bildern auf Webseiten (die Website kann Ihre Nutzungsinformationen mithilfe dieser Cookies verfolgen)
Das Grundwissen erwähnte gerade das Problem des Lebenszyklus eines Keks. Tatsächlich können Kekse in zwei Staaten grob unterteilt werden:
Temporäre Kekse. Während des aktuellen Nutzungsprozesses speichert die Website einige persönliche Informationen, und die Informationen werden vom Computer aus gelöscht, nachdem der Browser geschlossen wurde.
Legt den Cookie für die Ablaufzeit fest. Selbst wenn der Browser ausgeschaltet ist, wird die Informationsindustrie immer noch im Computer sein. Das Anmeldename und das Passwort müssen nicht jedes Mal anmelden, wenn Sie zu einer bestimmten Site gehen. Dieser Cookie kann mehrere Tage, Monate oder sogar Jahre auf dem Computer aufbewahrt werden
Es gibt zwei Möglichkeiten, Kekse zu löschen:
Löschen Sie Cookies durch Browser-Tools (es gibt Tools von Drittanbietern, und der Browser selbst hat auch diese Funktion)
Löschen Sie Cookies, indem Sie die Gültigkeitsdauer von Cookies festlegen
Hinweis: Das Löschen von Cookies kann manchmal dazu führen, dass einige Webseiten nicht richtig funktionieren
Browser können durch Einstellungen Zugriff auf Cookies akzeptieren und verweigern.
Aus Funktions- und Leistungsgründen wird empfohlen, die Anzahl der verwendeten Cookies zu minimieren und kleine Cookies so weit wie möglich zu verwenden.
Details zur Cookie -Codierung werden im Cookie Advanced -Artikel separat eingeführt.
Wenn es sich um eine Seite auf der lokalen Festplatte handelt, kann die Chromkonsole JavaScript nicht zum Lesen und Schreiben von Cookies verwenden. Die Lösung ist ... einen Browser^_^zu ändern.
Grundnutzung von Keksen
1. Einfacher Zugriffsvorgänge
Wenn Sie mit JavaScript auf Cookies zugreifen, müssen Sie das Cookie -Attribut des Dokumentobjekts verwenden. Eine Codezeile führt vor, wie ein Cookie erstellt und geändert wird:
Die Codekopie lautet wie folgt:
document.cookie = 'userername = Darren';
Im obigen Code repräsentiert "Benutzername" den Cookie -Namen und "Darren" den Wert, der diesem Namen entspricht. Unter der Annahme, dass der Keksname nicht existiert, wird ein neues Cookie erstellt. Wenn es existiert, wird der Wert, der dem Cookie -Namen entspricht, geändert. Wenn Sie mehrmals Cookies erstellen möchten, verwenden Sie diese Methode einfach wiederholt.
2. Cookie Lesevorgang
Es ist tatsächlich sehr einfach, Cookies genau zu lesen, nämlich auf Saiten zu arbeiten. Kopieren Sie diesen Code auf w3school, um zu analysieren:
Die Codekopie lautet wie folgt:
Funktion getcookie (c_name) {
if (document.cookie.length> 0) {// Überprüfen Sie zuerst, ob das Cookie leer ist, wenn es leer ist, zurück "" ""
c_start = document.cookie.indexof (c_name + "=") // Überprüfen Sie, ob dieses Cookie über indexof () des String -Objekts existiert. Wenn es nicht existiert, ist es -1
if (c_start! =-1) {
c_start = c_start +c_name.length +1 // Die letzte +1 bedeutet tatsächlich die Nummer "=", so dass die Startposition des Cookie -Werts erhalten wird
c_end = document.cookie.indexof (";", c_start) // Als ich den zweiten Parameter von Indexof () sah, wurde ich plötzlich ein wenig schwindelig. Später erinnerte ich mich, dass es die angegebene Startindexposition angibt ... Dieser Satz soll die Endposition des Wertes erhalten. Da es notwendig ist zu prüfen, ob es sich um den letzten Punkt handelt, wird er danach beurteilt, ob das ""; Nummer existiert.
if (c_end ==-1) c_end = document.cookie.length
Return Unscape (document.cookie.substring (c_start, c_end)) // Der Wert wird durch substring () erhalten. Wenn Sie Unscape () verstehen möchten, müssen Sie zuerst wissen, was escise () tut. Sie sind alle sehr wichtige Grundlagen. Wenn Sie wissen möchten, können Sie danach suchen. Die Details der Cookie -Codierung werden auch am Ende des Artikels erläutert.
}
}
zurückkehren ""
}
Natürlich gibt es viele Möglichkeiten, Cookies wie Arrays, Regelmäßigkeiten usw. zu implementieren, sodass ich hier nicht auf Details eingehen werde.
3. Setzen Sie die Gültigkeitsdauer von Cookies
Der Lebenszyklus von Keksen, die häufig in Artikeln auftreten, ist die Gültigkeitsdauer und die Ablaufzeit, dh die Zeit, in der die Kekse existieren. Standardmäßig werden Cookies automatisch gelöscht, wenn der Browser geschlossen ist, aber wir können die Gültigkeitsdauer von Cookies durch Ablauf einstellen. Die Syntax ist wie folgt:
Die Codekopie lautet wie folgt:
document.cookie = "name = value; aussieht = Datum";
Der Datumswert im obigen Code ist eine Zeichenfolge für das Datumstyp im GMT-Format (Greenwich Time), und die Erzeugungsmethode lautet wie folgt:
Die Codekopie lautet wie folgt:
var _date = new Date ();
_date.setDate (_date.getDate ()+30);
_date.togmtstring ();
Die obigen drei Codezeilen werden in mehrere Schritte unterteilt:
Generieren Sie eine Instanz von Datum durch neu, um die aktuelle Zeit zu erhalten.
GetDate () -Methode erhält einen Tag im aktuellen lokalen Monat und fügt dann 30 hinzu, was bedeutet, dass ich hoffe, dass dieser Keks vor Ort für 30 Tage gespeichert werden kann.
Stellen Sie dann die Zeit durch die SetDate () -Methode ein;
Verwenden Sie schließlich die Methode TogMtstring (), um das Datumsobjekt in eine Zeichenfolge umzuwandeln und das Ergebnis zurückzugeben
Die folgende vollständige Funktion zeigt die Punkte, auf die wir beim Erstellen von Cookies achten müssen. Erstellen Sie eine Funktion, die Informationen in einem Cookie speichert:
Die Codekopie lautet wie folgt:
Funktionsetcookie (c_name, Wert, Ablauf) {
var exdate = new Date ();
exDate.setDate (exDate.getDate () + expIRedays);
document.cookie = c_name + "=" + Escape (Wert) + ((expiredays == null)? "": "; expires =" + exdate.togmtstring ());
}
// Nutzungsmethode: setCookie ('Benutzername', 'Darren', 30)
Jetzt legt unsere Funktion die gültige Zeit des Cookies nach der Anzahl der Tage fest. Wenn Sie es in anderen Einheiten festlegen möchten (z. B.: Stunden), ändern Sie die dritte Codezeile:
Die Codekopie lautet wie folgt:
exDate.sethoors (exDate.gethours () + expIREDAYS);
Auf diese Weise basiert die Gültigkeitsdauer der Kekse auf Stunden.
Es gibt zwei Möglichkeiten, Kekse in den FAQs zu löschen. Jetzt möchten wir sagen, dass Cookies durch Einstellen der Gültigkeitszeit auf eine abgelaufene Zeit ungültig werden. Da es eine Methode gibt, um das Ablaufdatum festzulegen, bitten Sie interessierte Freunde, es selbst zu tun^_^. Lassen Sie uns mit dem tieferen Cookie -Thema weiter unten fortfahren.
Cookie Fortgeschrittene
One.Cookie Path Concept
In den Grundlagen wird das Konzept von Cookies mit Domänen und Pfaden erwähnt. Lassen Sie uns nun die Rolle von Wegen in Cookies einführen.
Cookies werden normalerweise erstellt, weil Benutzer auf die Seite zugreifen. Dieses Cookie ist jedoch nicht nur auf der Seite zugänglich, auf der das Cookie erstellt wird.
Standardmäßig können nur Webseiten im selben Verzeichnis oder Unterverzeichnis wie die Seite, auf der das Cookie erstellt wurde, zugegriffen werden. Dies ist auf Sicherheitsüberlegungen zurückzuführen, und nicht alle Seiten können nach Belieben auf Cookies zugreifen. Zum Beispiel:
Erstellen Sie ein Cookie auf der Seite "//www.vevb.com/darren_code/", dann auf der Seite unter dem Pfad "/Darren_Code/" wie: "//www.vevb.com/darren_code/archive/2011/11/07/cookie.html" kann Cookie -Informationen durch Default -Informationen durch Default.
Standardmäßig "//www.vevb.com" oder "//www.vevb.com/xxxx/" kann nicht auf dieses Cookie zugreifen (es ist nutzlos, sie nur anzusehen, üben Sie die Wahrheit^_^).
So können Sie dieses Cookie für andere Verzeichnisse oder Elternverzeichnisse zugänglich machen, indem Sie es erreichen, indem Sie den Pfad des Cookies einstellen. Beispiele sind wie folgt:
Die Codekopie lautet wie folgt:
document.cookie = "name = value; path = path"
document.cookie = "name = value; aussieht = Datum; Path = Path"
Der rote Schriftweg ist der Weg des Keks. Das häufigste Beispiel ist, das Cookie im Verzeichnis zu lassen, damit unabhängig davon, auf welcher Unterseite erstellt wird, auf alle Seiten zugegriffen werden kann:
Die Codekopie lautet wie folgt:
document.cookie = "name = Darren; path =/";
Two.cookie Domain Concept
Der Pfad kann das Problem des Zugriffs auf Cookies unter derselben Domäne lösen. Lassen Sie uns weiter über das Problem des Zugriffs auf Cookies zwischen derselben Domäne sprechen. Die Syntax ist wie folgt:
Die Codekopie lautet wie folgt:
document.cookie = "name = value; path = path; Domain = Domain";
Die rote Domäne ist der Wert des Cookie -Feldsatzes.
Zum Beispiel "www.qq.com" und "sports.qqq.com" teilen einen verwandten Domain -Namen "QQ.com". Wenn wir möchten, dass das Cookie unter "Sports.qq.com" von "www.qq.com" zugegriffen wird, müssen wir das Domain -Attribut des Cookies verwenden und das Pfadattribut auf "/" festlegen. Beispiel:
Die Codekopie lautet wie folgt:
document.cookie = "userername = Darren; path =/; Domain = qq.com";
Hinweis: Es ist definitiv Zugriff zwischen derselben Domäne, und der Domänenwert kann nicht auf einen Domänennamen festgelegt werden, der nicht die primäre Domäne ist.
Drei.Cookie -Sicherheit
Normalerweise werden Cookie -Informationen verwendet, um Daten mithilfe von HTTP -Verbindungen zu übergeben. Diese Liefermethode ist leicht zu sehen, sodass die in Cookies gespeicherten Informationen leicht gestohlen werden. Wenn der im Cookie gelieferte Inhalt wichtiger ist, ist eine verschlüsselte Datenübertragung erforderlich.
Daher ist der Name dieses Attributs des Cookies "sicher" und der Standardwert leer. Wenn das Attribut eines Cookies sicher ist, werden Daten zwischen ihm und dem Server über HTTPS oder andere Sicherheitsprotokolle übertragen. Die Syntax ist wie folgt:
Die Codekopie lautet wie folgt:
document.cookie = "userername = Darren; sicher"
Das Einstellen von Cookies, um sich zu sichern, stellt nur sicher, dass der Datenübertragungsprozess zwischen den Cookies und dem Server verschlüsselt ist, während die lokal gespeicherte Cookie -Datei nicht verschlüsselt ist. Wenn Sie möchten, dass lokale Cookies verschlüsselt werden, müssen Sie Ihre Daten selbst verschlüsseln.
HINWEIS: Selbst wenn das sichere Attribut festgelegt ist, bedeutet dies nicht, dass andere die Cookie -Informationen, die lokal auf Ihrer Maschine gespeichert sind, nicht sehen können. Setzen Sie also schließlich nicht wichtige Informationen zu Cookies, ...
Vier.Cookie -Codierungsdetails
Ich wollte ursprünglich das Wissen über Cookie -Codierung im FAQ -Abschnitt vorstellen, denn wenn ich dies nicht verstehe, ist das Codierungsproblem in der Tat eine Fallstrick, also werde ich im Detail darüber sprechen.
Bei der Eingabe von Cookie -Informationen können Sie keine speziellen Symbole wie Räume, Semikolons, Kommas usw. einbeziehen, und im Allgemeinen erfolgt die Speicherung von Cookie -Informationen in einer nicht kodierten Weise. Bevor Sie Cookie -Informationen einstellen, müssen Sie zuerst die Funktion Escape () verwenden, um die Cookie -Wert -Informationen zu codieren. Wenn Sie den Cookie -Wert erhalten, verwenden Sie die Funktion Unscape (), um den Wert zurück zu konvertieren. Wenn Kekse einstellen:
Die Codekopie lautet wie folgt:
document.cookie = name + "=" + Escape (Wert);
Schauen wir uns den Satz in Getcookie () an, der in der Grundnutzung erwähnt wird:
Die Codekopie lautet wie folgt:
return undecape (document.cookie.substring (c_start, c_end));
Auf diese Weise müssen Sie sich keine Sorgen um den Cookie -Informationsfehler machen, da im Cookie -Wert ein spezielles Symbol angezeigt wird.
Persönlicher Code
Die Codekopie lautet wie folgt:
/*Cookies einstellen*/
Funktionsetokookie (c_name, value, obere altedays, path, domain, sicher) {
var exdate = new Date (); // Erhalten Sie die aktuelle Zeit
exDate.setDate (exDate.getDate () + abgelaufen); // Ablaufzeit
document.cookie = c_name + "=" + // Cookie -Name
Escape (Wert) + // Codierung des Cookie -Werts
((expiredays == null)?
((Path == NULL)? '/': '; Path =' + Path) + // Legen Sie den Zugriffspfad fest
((Domain == NULL)? '': '; Domain =' + Domain) + // Setzen Sie die Zugriffsdomäne
((Secure == NULL)? '': '; Secure =' + Secure); // festlegen, ob verschlüsselt werden soll oder nicht
};
setCookie ('test', 'name = sheng; sex = men; lancer = Dullbear', 30);
setcookie ('bb', 'name = sheng; sex = männer', 30);
/*Kekse holen*/
Funktion getcookie (c_name, index) {
var cookies = document.cookie; // Cookie -Wert erhalten
var Cookielen = Cookies.length; // Kekslänge bekommen
if (cookielen> 0) {// Wenn das Cookie nicht leer ist
var c_start = cookies.indexof (c_name + '='); // Ermitteln Sie die Seriennummer, die für den Cookie -Wert im Cookie erforderlich ist
if (c_start> -1) {// Wenn der Cookie -Wert existiert
c_start + = c_name.length + 1; // Die Startsequenznummer des Cookie -Wertes abrufen
var c_end = cookies.indexof (';', c_start); // Erhalten Sie die Endsequenznummer des Cookie -Werts
if (c_end == -1) {// Wenn das Cookie der letzte ist
C_end = Cookielen; // Stellen Sie die Endsequenznummer des Cookie -Werts auf die Cookie -Länge ein
};
var cookiestr = unsandescape (Cookies.substring (c_start, c_end)); // Holen Sie sich den dekodierten Cookie -Wert
var cookieObj = cookiestr.Split (';'); // Cookie -Wert teilen
index = ((index == null)? 0: index); // Beurteilen Sie, ob der Index an einen Wert übergeben wird
var acorObj = CookieObj [Index]; // Indexarray
var torestr = toorObj.split ('=');
var getcook = goreStr [1]; // Erhalten Sie den Kekswert, der erhalten werden muss
Return GetCook;
};
} anders {
console.log ('Die Seite hat keine Cookies');
}
};
Alert (getcookie ('test', 0)); // Query Cookie -Wert drucken