Heim > Web-Frontend > js-Tutorial > Einführung in die Verwendung und Nachteile von Cookies in JS

Einführung in die Verwendung und Nachteile von Cookies in JS

零下一度
Freigeben: 2017-05-16 09:35:07
Original
1215 Leute haben es durchsucht

Cookie ist ein solcher Mechanismus. Es kann die zustandslosen Mängel des HTTP-Protokolls ausgleichen. Bevor Session erschien, verwendeten grundsätzlich alle Websites Cookies, um Sitzungen zu verfolgen. Dieser Artikel stellt Ihnen die Verwendung und die Nachteile von Cookies in JS vor. Freunde, die sie benötigen, können sich darauf beziehen

Was ist Cookie

Cookie bedeutet „Sweet Cookie“ und ist ein Mechanismus, der von der W3C-Organisation vorgeschlagen und zuerst von der Netscape-Community entwickelt wurde. Derzeit sind Cookies zum Standard geworden und alle gängigen Browser wie IE, Netscape, Firefox, Opera usw. unterstützen Cookies.

Da HTTP ein zustandsloses Protokoll ist, hat der Server keine Möglichkeit, die Identität des Clients allein anhand der Netzwerkverbindung zu ermitteln. Was zu tun? Geben Sie den Kunden einfach einen Ausweis aus, einen für jede Person, egal wer sie besucht, sie müssen ihren eigenen Ausweis mitbringen. Auf diese Weise kann der Server die Identität des Clients anhand des Passes bestätigen. So funktionieren Cookies.

Cookie ist eigentlich eine kurze Textinformation. Der Client fordert den Server an, den Benutzerstatus aufzuzeichnen, und sendet als Antwort ein Cookie an den Client-Browser. Der Client-Browser speichert das Cookie. Wenn der Browser die Website erneut anfordert, übermittelt der Browser die angeforderte URL zusammen mit dem Cookie an den Server. Der Server überprüft dieses Cookie, um den Status des Benutzers zu identifizieren. Der Server kann den Inhalt des Cookies auch nach Bedarf ändern.

Cookie-Mechanismus

Im Programm ist die Sitzungsverfolgung eine sehr wichtige Sache. Theoretisch sollten alle Anforderungsvorgänge eines Benutzers zu derselben Sitzung gehören, während alle Anforderungsvorgänge eines anderen Benutzers zu einer anderen Sitzung gehören sollten, und die beiden können nicht verwechselt werden. Beispielsweise sollte jedes von Benutzer A im Supermarkt gekaufte Produkt in den Warenkorb von A gelegt werden. Unabhängig davon, wann Benutzer A es kauft, gehört es zur selben Sitzung und kann nicht in den Warenkorb von Benutzer B oder Benutzer C gelegt werden gehören nicht zur selben Sitzung.

Webanwendungen nutzen das HTTP-Protokoll zur Datenübertragung. Das HTTP-Protokoll ist ein zustandsloses Protokoll. Sobald der Datenaustausch abgeschlossen ist, wird die Verbindung zwischen Client und Server geschlossen und es muss eine neue Verbindung hergestellt werden, um erneut Daten auszutauschen. Dies bedeutet, dass der Server die Sitzung nicht über die Verbindung verfolgen kann. Das heißt, Benutzer A kauft einen Artikel und legt ihn in den Warenkorb. Wenn der Artikel erneut gekauft wird, kann der Server nicht feststellen, ob der Kauf zur Sitzung von Benutzer A oder zur Sitzung von Benutzer B gehört. Um diese Sitzung zu verfolgen, muss ein Mechanismus eingeführt werden.

Cookie ist ein solcher Mechanismus. Es kann die zustandslosen Mängel des HTTP-Protokolls ausgleichen. Bevor Session erschien, verwendeten grundsätzlich alle Websites Cookies, um Sitzungen zu verfolgen.

JS setzt Cookies:

Angenommen, Sie möchten auf Seite A den Wert der -Variablen Benutzername („Jack“) speichern Beim Cookie ist der Schlüsselwert der Name, der entsprechende JS-Code lautet:

 document.cookie="name="+username;
Nach dem Login kopieren

Semikolons (;), Kommas (,), Gleichheitszeichen (=) und Leerzeichen können nicht in Cookie-Namen oder -Werten verwendet werden. Dies lässt sich leicht im Namen des Cookies machen, der zu speichernde Wert ist jedoch undefiniert. Wie speichert man diese Werte? Die Methode besteht darin, die Escape()Funktion zum Kodieren zu verwenden, die einige Sonderzeichen hexadezimal ausdrücken kann. Beispielsweise werden Leerzeichen als „20 %“ kodiert, die im Cookie-Wert gespeichert werden können. und verwenden Diese Lösung kann auch das Auftreten verstümmelter chinesischer Zeichen vermeiden.

document.cookie="str="+escape("I love ajax"); 
// document.cookie="str=I%20love%20ajax";
Nach dem Login kopieren

Wenn Sie die Escape()-Codierung verwenden, müssen Sie unescape() zum Dekodieren verwenden, nachdem Sie den Wert herausgenommen haben, um den ursprünglichen Cookie-Wert zu erhalten.

JS Cookie lesen:

Angenommen, der im Cookie gespeicherte Inhalt ist: name=jack;password=123

, dann erhält der JS-Code den Wert der Variablen Benutzername auf Seite B lautet wie folgt:

var username=document.cookie.split(";")[0].split("=")[1];
//JS操作cookies方法!
//写cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
Nach dem Login kopieren

Cookies lesen

function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
删除cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//使用示例
setCookie("name","hayden");
alert(getCookie("name"));
//如果需要设定自定义过期时间
//那么把上面的setCookie 函数换成下面两个函数就ok;
//程序代码
function setCookie(name,value,time)
{
var strsec = getsec(time);
var exp = new Date();
exp.setTime(exp.getTime() + strsec*1);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getsec(str)
{
alert(str);
var str1=str.substring(1,str.length)*1;
var str2=str.substring(0,1);
if (str2=="s")
{
return str1*1000;
}
else if (str2=="h")
{
return str1*60*60*1000;
}
else if (str2=="d")
{
return str1*24*60*60*1000;
}
}
//这是有设定过期时间的使用示例:
//s20是代表20秒
//h是指小时,如12小时则是:h12
//d是天数,30天则:d30
setCookie("name","hayden","s20");
Nach dem Login kopieren

Cookie-Nachteile

Cookie Obwohl die dauerhafte Speicherung von Clientdaten Komfort bietet und die Last des Serverspeichers teilt, weist sie dennoch viele Einschränkungen auf.

Erstens: Unter jedem spezifischen Domainnamen werden maximal 20 Cookies generiert

1. IE6 oder niedrigere Versionen haben maximal 20 Cookies

2.IE7 und höhere Versionen Am Ende können es 50 Kekse sein.

3. Firefox hat maximal 50 Cookies

4. Chrome und Safari haben keine festen Beschränkungen

IE und Opera löschen die zuletzt verwendeten Cookies, Firefox jedoch Reinigen Sie die Kekse nach dem Zufallsprinzip.

Die maximale Größe eines Cookies beträgt ca. 4096 Byte. Aus Kompatibilitätsgründen darf sie im Allgemeinen 4095 Byte nicht überschreiten.

IE bietet einen Speicher, der Benutzerdaten speichern kann, namens uerData, der seit IE5.0 unterstützt wird. Alle Daten können bis zu 128 KB groß sein und jeder Domänenname kann bis zu 1 MB groß sein. Diese persistenten Daten werden im Cache abgelegt. Wenn der Cache nicht geleert wird, sind sie immer vorhanden.

Vorteile: Extrem hohe Skalierbarkeit und Verfügbarkeit

1. Kontrollieren Sie durch gute Programmierung die Größe des im Cookie gespeicherten Sitzungsobjekts.

2. Reduzieren Sie die Möglichkeit des Cookie-Crackings durch Verschlüsselung und sichere Übertragungstechnologie (SSL).

3. Im Cookie werden nur unsensible Daten gespeichert und es entsteht kein nennenswerter Verlust, selbst wenn sie gestohlen werden.

4. Kontrollieren Sie die Lebensdauer von Cookies, damit sie nicht ewig gültig sind. Ein Dieb hat möglicherweise ein abgelaufenes Cookie erhalten.

Nachteile:

1. Begrenzung der Anzahl und Länge von „Cookies“. Jede Domain kann maximal 20 Cookies haben und die Länge jedes Cookies darf 4 KB nicht überschreiten, andernfalls wird es gekürzt.

2. Sicherheitsprobleme. Wenn das Cookie von jemandem abgefangen wird, kann diese Person alle Sitzungsinformationen erhalten. Selbst eine Verschlüsselung hilft nicht weiter, denn der Abfangjäger muss die Bedeutung des Cookies nicht kennen, er kann den Zweck erreichen, indem er das Cookie einfach so weiterleitet, wie es ist.

3. Einige Zustände können nicht auf dem Client gespeichert werden. Um beispielsweise doppelte Formularübermittlungen zu verhindern, müssen wir einen Zähler auf der Serverseite speichern. Wenn wir diesen Zähler auf der Clientseite speichern, hat er keine Auswirkung.

【Verwandte Empfehlungen】

1. Besondere Empfehlung: Version „php Programmer Toolbox“ V0.1 herunterladen

2. Kostenloses js-Online-Video-Tutorial

3 php.cn Dugu Jiujian (3) – JavaScript-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung und Nachteile von Cookies in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage