Heim >Web-Frontend >js-Tutorial >Was sind Cookies in Javascript und wie liest man Cookies?

Was sind Cookies in Javascript und wie liest man Cookies?

伊谢尔伦
伊谢尔伦Original
2017-07-22 13:45:151883Durchsuche

Was ist Cookie?

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-Einstellungs-Cookie:

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


 document.cookie="name="+username;

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, zum Kodieren die Funktion escape() zu verwenden, die eine hexadezimale Darstellung einiger Sonderzeichen verwenden kann. Beispielsweise werden Leerzeichen als „20 %“ kodiert, die im Cookie-Wert gespeichert werden können, und diese Lösung kann verwendet werden Vermeiden Sie auch die Entstehung verstümmelter chinesischer Schriftzeichen.


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

Wenn Sie die Escape()-Kodierung verwenden, müssen Sie nach dem Herausnehmen des Werts unescape() verwenden, um ihn zu dekodieren, um den ursprünglichen Cookie-Wert zu erhalten,

JS liest Cookie:

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

Dann erhält der JS-Code den Wert der Variablen Der 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();
}

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");

Das obige ist der detaillierte Inhalt vonWas sind Cookies in Javascript und wie liest man Cookies?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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