javascript入門經典--筆記9 cookie
阿新 • • 發佈:2019-02-17
一個cookie的例子:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> document.cookie = "UserName = paul;expires=Tue, 28 Dec 2020 00:00:00;"; </script> </head> <body> <p>This page just created a kookie</p> </body> </html>
cookie字串
當建立一個cookie 時,需要建立一個cookie字串,包含 6 個子串: name , value , expires(過期時間), path(路徑), domain(域)和secure(安全)。其中後面4 個是可選的
name 用來引用該cookie ,value 則是該cookie 所儲存的資訊。name/value 對 是必須要設定的,且需要放置在字串開始。
UserName = paul;
上面即為名為Username , 值為 paul .
expires ,如果不設定,則為會話cookie,使用者關閉瀏覽器之後cookie就過期。過期時間的格式根重要,必須與 toGMTString( ) 方法返回的格式相同。該方法用於發揮一個Date 物件的 GMT 時間。
但是如果使用者刪掉cookie 或者瀏覽器所能支援的 cookie 數量達到上限,cookie就在在過期時間之前失效。<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /*獲取當前時間*/ var expireDate = new Date(); /*將過期時間設定為當前時間+7秒之後*/ expireDate.setMilliseconds(expireDate.getMilliseconds()+7000); /*這裡注意需要將日期格式設定為GMT格式*/ document.cookie = "UserName = paul;expires="+expireDate.toGMTString()+";"; /*這裡expireDate.toGMTString()為什麼加雙引號???*/ </script> </head> <body> <p>This page just created a kookie</p> </body> </html>
secure:是一個布林值,如果設定為true,則該cookie 將僅在瀏覽器和伺服器通過SSL(安全套接層)安全協議連線時才會被傳輸。通常情況下不用指定,只通過一個普通的HTTP 連線來傳輸。
建立cookie
建立一個cookie函式:
function setCookie (cookieName,cookieValue,cookiePath,cookieExpires){
/*將特殊字元進行編碼*/
cookieValue=escape(cookieValue);
if(cookieExpires==""){
var nowDate = new Date();
nowDate.setMonth(nowDate.getMonth()+6);
cookieExpires=nowDate.toGMTSrting();
}
if(cookiePath!=""){
cookiePath="; path="+cookiePath;
}
document.cookie=cookieName+"="+cookieValue+";"+"cookieExpires="+cookieExpires+";"+cookiePath;
}
cookie中name以及value中不可以含有特殊字元,比如空格,分號等等,這裡的escape( )函式將 可以對特殊字元進行轉義,將非字母轉義成十六進位制編碼。同樣可以用
unescape()來解碼。
使用setCookie 函式:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>set cookie</title>
<script type="text/javascript">
function setCookie (cookieName,cookieValue,cookiePath,cookieExpires){
cookieValue=escape(cookieValue);
if(cookieExpires==""){
var nowDate = new Date();
nowDate.setMonth(nowDate.getMonth()+6);
cookieExpires=nowDate.toGMTString();
}
if(cookiePath!=""){
cookiePath="; path="+cookiePath;
}
/*設定cookie函式*/
document.cookie=cookieName+"="+cookieValue+";"+"cookieExpires="+cookieExpires+";"+cookiePath;
}
setCookie("Name","bob","","");
setCookie("Age","18","","");
setCookie("FirstVisite","10 may 2007","","");
alert(document.cookie);
</script>
</head>
<body>
</body>
</html>