溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

cookie 的使用

發(fā)布時間:2020-06-21 08:35:58 來源:網(wǎng)絡(luò) 閱讀:504 作者:我是誰VS夢 欄目:web開發(fā)

該文章來源于網(wǎng)頁整理.

 

1.
";expires="之前的字符串你可以隨便寫,但是";expires="必須遵循這個寫法,尤其是這個分號不能少,不然瀏覽器是認(rèn)不出你的expires(過期時間),而把它當(dāng)成cookie內(nèi)容的一部分。

設(shè)置標(biāo)識符的時候,我建議盡量不要用分號當(dāng)做分隔符?!巴痰袅恕保斐蛇@個現(xiàn)象的原因是,瀏覽器在保存cookie的時候,在讀到分號之后,就認(rèn)為cookie的內(nèi)容結(jié)束了。


要在一條cookie中設(shè)置多個值,就需要像代碼2這樣用標(biāo)示符(不要分號)進(jìn)行分割。然后在讀取的時候,也根據(jù)標(biāo)示符進(jìn)行逐個讀取。


設(shè)置多個cookie,這個時候,你再去解析cookie的時候,就要用分號作為分隔符了。

我們盡量不要直接在Cookie中 保存一些重要的或者敏感的內(nèi)容。如果我們確實(shí)需要使用Cookie保存一些重要的內(nèi)容,但又不希望被他人看懂, 我們可以使用一些加密的方法來保護(hù)這些內(nèi)容。

 

chrome不支持本地cookie,而需要用online-cookie

代碼來自w3school的js操作cookie教程,經(jīng)本人整理和個性化。

<!-- 記住密碼 -->
 <html>
 <head>
 <script type="text/javascript">

 function getCookie(c_name)      //根據(jù)分隔符每個變量的值
 {
     if (document.cookie.length > 0) {
         c_start = document.cookie.indexOf(c_name + "=")
         if (c_start != -1) { 
             c_start = c_start + c_name.length + 1;
             c_end = document.cookie.indexOf("^",c_start);
             if (c_end==-1)
                 c_end=document.cookie.length;
             return unescape(document.cookie.substring(c_start,c_end));
     } 
   }
     return "";
 }

 function setCookie(c_name, n_value, p_name, p_value, expiredays)        //設(shè)置cookie
 {
     var exdate = new Date();
     exdate.setDate(exdate.getDate() + expiredays);
     document.cookie = c_name + "=" + escape(n_value) + "^" + p_name + "=" + escape(p_value) + ((expiredays == null) ? "" : "^;expires=" + exdate.toGMTString());
     console.log(document.cookie)
 }

 function checkCookie()      //檢測cookie是否存在,如果存在則直接讀取,否則創(chuàng)建新的cookie
 {
     alert(document.cookie)
     var username = getCookie('username');
     var password = getCookie('password');
     if (username != null && username != "" && password != null && password != "") {
         alert('Your name: ' + username + '\n' + 'Your password: ' + password);
     }
     else {
         username = prompt('Please enter your name:',"");
         password = prompt('Please enter your name:',"");
         if (username != null && username != "" && password != null && password != "")
         {
             setCookie('username', username, 'password', password, 365);
         }
     }
     alert(document.cookie)
 }

 function cleanCookie (c_name, p_name) {     //使cookie過期
     document.cookie = c_name + "=" + ";" + p_name + "=" + ";expires=Thu, 01-Jan-70 00:00:01 GMT";
 }
 </script>
 </head>

 <body onLoad="checkCookie()">
 </body>
 </html>


2.

jquery.cookie 使用方法一個輕量級的 cookie 插件,可以讀取、寫入、刪除 cookie。 
jquery.cookie.js 的配置首先包含 jQuery 的庫文件,在后面包含 jquery.cookie.js 的庫文件。 

<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script> 
<script type="text/javascript" src="js/jquery.cookie.js"></script> 


使用方法新添加一個會話 cookie:
 $.cookie('the_cookie', 'the_value'); 
注:當(dāng)沒有指明 cookie 有效時間時,所創(chuàng)建的 cookie 有效期默認(rèn)到用戶關(guān)閉瀏覽器為止,所以被稱為 “會話 cookie(session cookie)”。

創(chuàng)建一個 cookie 并設(shè)置有效時間為 7 天: 
$.cookie('the_cookie', 'the_value', { expires: 7 }); 
注: 當(dāng)指明了 cookie 有效時間時, 所創(chuàng)建的 cookie 被稱為 “持久 cookie (persistent cookie)。 ” 

創(chuàng)建一個 cookie 并設(shè)置 cookie 的有效路徑:
 $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' }); 
注:在默認(rèn)情況下,只有設(shè)置 cookie 的網(wǎng)頁才能讀取該 cookie。如果想讓一個頁面讀取另一個頁面設(shè) 置的 cookie,必須設(shè)置 cookie 的路徑。cookie 的路徑用于設(shè)置能夠讀取 cookie 的頂級目錄。將這 個路徑設(shè)置為網(wǎng)站的根目錄, 可以讓所有網(wǎng)頁都能互相讀取 cookie (一般不要這樣設(shè)置, 防止出現(xiàn)沖突)。


讀取 cookie:
$.cookie('the_cookie'); 
// cookie 存在 => 'the_value' $.cookie('not_existing'); 
// cookie 不存在 => null 刪除 cookie,通過傳遞 null 作為 cookie 的值即可: $.cookie('the_cookie', null); 

部分參數(shù)解釋:
domain: 'example.com'   默認(rèn)值:創(chuàng)建 cookie 的網(wǎng)頁所擁有的域名。
secure: true  默認(rèn)值:false。
        如果為 true,cookie 的傳輸需要使用安全協(xié)議(HTTPS)。 raw: true 默認(rèn)值:false。 默認(rèn)情況下,讀取和寫入 cookie 的時候自動進(jìn)行編碼和解碼(使用 encodeURIComponent 編碼,             decodeURIComponent 解碼)。要關(guān)閉這個功能設(shè)置 raw: true 即可。 

 


 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI