99久久精品国产片-99久久精品国产免费-99久久精品国产麻豆-99久久精品国产国产毛片-99久久精品国产高清一区二区-99久久精品费精品国产一区二区

關(guān)于Cookie的原理、作用,區(qū)別以及使用

2018-4-16    seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

1、cookie的作用:

我們?cè)跒g覽器中,經(jīng)常涉及到數(shù)據(jù)的交換,比如你登錄郵箱,登錄一個(gè)頁(yè)面。我們經(jīng)常會(huì)在此時(shí)設(shè)置30天內(nèi)記住我,或者自動(dòng)登錄選項(xiàng)。那么它們是怎么記錄信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP服務(wù)器設(shè)置的,保存在瀏覽器中,但HTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議,在數(shù)據(jù)交換完畢后,服務(wù)器端和客戶端的鏈接就會(huì)關(guān)閉,每次交換數(shù)據(jù)都需要建立新的鏈接。就像我們?nèi)コ匈I(mǎi)東西,沒(méi)有積分卡的情況下,我們買(mǎi)完?yáng)|西之后,超市沒(méi)有我們的任何消費(fèi)信息,但我們辦了積分卡之后,超市就有了我們的消費(fèi)信息。cookie就像是積分卡,可以保存積分,商品就是我們的信息,超市的系統(tǒng)就像服務(wù)器后臺(tái),http協(xié)議就是交易的過(guò)程。


2、機(jī)制的區(qū)別:

session機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案,而cookie機(jī)制則是在客戶端保持狀態(tài)的方案,cookie又叫會(huì)話跟蹤機(jī)制。打開(kāi)一次瀏覽器到關(guān)閉瀏覽器算是一次會(huì)話。說(shuō)到這里,講下HTTP協(xié)議,前面提到,HTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議,在數(shù)據(jù)交換完畢后,服務(wù)器端和客戶端的鏈接就會(huì)關(guān)閉,每次交換數(shù)據(jù)都需要建立新的鏈接。此時(shí),服務(wù)器無(wú)法從鏈接上跟蹤會(huì)話。cookie可以跟蹤會(huì)話,彌補(bǔ)HTTP無(wú)狀態(tài)協(xié)議的不足。


3、cookie的分類:

cookie分為會(huì)話cookie和持久cookie,會(huì)話cookie是指在不設(shè)定它的生命周期expires時(shí)的狀態(tài),前面說(shuō)了,瀏覽器的開(kāi)啟到關(guān)閉就是一次會(huì)話,當(dāng)關(guān)閉瀏覽器時(shí),會(huì)話cookie就會(huì)跟隨瀏覽器而銷(xiāo)毀。當(dāng)關(guān)閉一個(gè)頁(yè)面時(shí),不影響會(huì)話cookie的銷(xiāo)毀。會(huì)話cookie就像我們沒(méi)有辦理積分卡時(shí),單一的買(mǎi)賣(mài)過(guò)程,離開(kāi)之后,信息則銷(xiāo)毀。

持久cookie則是設(shè)定了它的生命周期expires,此時(shí),cookie像商品一樣,有個(gè)保質(zhì)期,關(guān)閉瀏覽器之后,它不會(huì)銷(xiāo)毀,直到設(shè)定的過(guò)期時(shí)間。對(duì)于持久cookie,可以在同一個(gè)瀏覽器中傳遞數(shù)據(jù),比如,你在打開(kāi)一個(gè)淘寶頁(yè)面登陸后,你在點(diǎn)開(kāi)一個(gè)商品頁(yè)面,依然是登錄狀態(tài),即便你關(guān)閉了瀏覽器,再次開(kāi)啟瀏覽器,依然會(huì)是登錄狀態(tài)。這就是因?yàn)閏ookie自動(dòng)將數(shù)據(jù)傳送到服務(wù)器端,在反饋回來(lái)的結(jié)果。持久cookie就像是我們辦理了一張積分卡,即便離開(kāi),信息一直保留,直到時(shí)間到期,信息銷(xiāo)毀。


4、簡(jiǎn)單的使用cookie的代碼

cookie的幾種常見(jiàn)屬性:document.cookie="key=value;expires=失效時(shí)間;path=路徑;domain=域名;secure;(secure表安全級(jí)別),

cookie以字符串的形式保存在瀏覽器中。下面貼段代碼出來(lái),是一個(gè)類似購(gòu)物網(wǎng)站的將商品添加到購(gòu)物車(chē),再?gòu)馁?gòu)物車(chē)還原商品信息的過(guò)程,是自己用原生JS封裝的函數(shù)。

封裝的cookie的存入,讀取以及刪除的函數(shù):(這里是將信息以對(duì)象的形式存放到cookie中的,會(huì)用到JSON的知識(shí))

[javascript] view plain copy
  1. // key : cookie 名  
  2. // value : cookie 值  
  3. // options : 可選配置參數(shù)  
  4. //      options = {  
  5. //          expires : 7|new Date(), // 失效時(shí)間  
  6. //          path : "/", // 路徑  
  7. //          domain : "", // 域名  
  8. //          secure : true // 安全連接  
  9. //      }  
  10. function cookie(key, value, options) {  
  11.     /* read 讀取 */  
  12.     // 如果沒(méi)有傳遞 value ,則表示根據(jù) key 讀取 cookie 值  
  13.     if (typeof value === "undefined") { // 讀取  
  14.         // 獲取當(dāng)前域下所有的 cookie,保存到 cookies 數(shù)組中  
  15.         var cookies = document.cookie.split("; ");  
  16.         // 遍歷 cookies 數(shù)組中的每個(gè)元素  
  17.         for (var i = 0, len = cookies.length; i < len; i++) {  
  18.             // cookies[i] : 當(dāng)前遍歷到的元素,代表的是 "key=value" 意思的字符串,  
  19.             // 將字符串以 = 號(hào)分割返回的數(shù)組中第一個(gè)元素表示 key,  
  20.             // 第二個(gè)元素表示 value  
  21.             var cookie = cookies[i].split("=");  
  22.             // 判斷是否是要查找的 key,對(duì)查找的 key 、value 都要做解碼操作  
  23.             if (decodeURIComponent(cookie[0]) === key) {  
  24.                 return decodeURIComponent(cookie[1]);  
  25.             }  
  26.         }  
  27.         // 沒(méi)有查找到指定的 key 對(duì)應(yīng)的 value 值,則返回 null  
  28.         return null;  
  29.     }  
  30.   
  31.     /* 存入 設(shè)置 */  
  32.     // 設(shè)置 options 默認(rèn)為空對(duì)象  
  33.     options = options || {};  
  34.     // key = value,對(duì)象 key,value 編碼  
  35.     var cookie = encodeURIComponent(key) + "=" + encodeURIComponent(value);  
  36.     // 失效時(shí)間  
  37.     if ((typeof options.expires) !== "undefined") { // 有配置失效時(shí)間  
  38.         if (typeof options.expires === "number") { // 失效時(shí)間為數(shù)字  
  39.             var days = options.expires,   
  40.                 t = options.expires = new Date();  
  41.             t.setDate(t.getDate() + days);  
  42.         }   
  43.         cookie += ";expires=" + options.expires.toUTCString();  
  44.     }  
  45.     // 路徑  
  46.     if (typeof options.path !== "undefined")  
  47.         cookie += ";path=" + options.path;  
  48.     // 域名  
  49.     if (typeof options.domain !== "undefined")  
  50.         cookie += ";domain=" + options.domain;  
  51.     // 安全連接  
  52.     if (options.secure)  
  53.         cookie += ";secure";  
  54.   
  55.     // 保存  
  56.     document.cookie = cookie;  
  57. }  
  58.   
  59. // 從所有的 cookie 中刪除指定的 cookie  
  60. function removeCookie(key, options) {  
  61.     options = options || {};  
  62.     options.expires = -1; // 將失效時(shí)間設(shè)置為 1 天前  
  63.     cookie(key, "", options);  
  64. }  

下面是商品詳情頁(yè)的JS代碼

[javascript] view plain copy
  1. // 找到所有的 “添加到購(gòu)物車(chē)” 超級(jí)鏈接  
  2.             var links = $("a", $("#tab"));  
  3.             // 循環(huán),為每個(gè) “添加到購(gòu)物車(chē)” 的超級(jí)鏈接添加點(diǎn)擊事件  
  4.             for (var i = 0, len = links.length; i < len; i++) {  
  5.                 links[i].onclick = function(){  
  6.                     // 獲取當(dāng)前超級(jí)鏈接所在行的所有單元格  
  7.                     var _cells = this.parentNode.parentNode.cells;  
  8.                     // 獲取到即將添加到購(gòu)物車(chē)中的商品信息  
  9.                     var _id = _cells[0].innerHTML,  
  10.                         _name = _cells[1].innerHTML,  
  11.                         _price = _cells[2].innerHTML;  
  12.                     // 將商品信息包裝到一個(gè)對(duì)象中  
  13.                     var product = {  
  14.                         id : _id,  
  15.                         name : _name,  
  16.                         price : _price,  
  17.                         amount : 1  
  18.                     };  
  19.   
  20.                     /* 將當(dāng)前選購(gòu)的商品對(duì)象保存到 cookie 中去 */  
  21.                     // 從 cookie 中讀取已有的保存購(gòu)物車(chē)的數(shù)組結(jié)構(gòu)  
  22.                     var _products = cookie("products");  
  23.                     if (_products === null// cookie 中不存在 products 名的 cookie  
  24.                         _products = [];  
  25.                     else // 存在,則解析 cookie 讀取到的字符串為 數(shù)組 結(jié)構(gòu)  
  26.                         _products = JSON.parse(_products);  
  27.   
  28.                     // 將當(dāng)前選購(gòu)的商品追加到數(shù)組中保存  
  29.                     _products.push(product);  
  30.                     // 繼續(xù)將 _products 數(shù)組內(nèi)容存回 cookie  
  31.                     cookie("products", JSON.stringify(_products), {expires:7});  
  32.                 }  
  33.             }  
html代碼,css代碼大家可以自己寫(xiě)

[javascript] view plain copy
  1. <table id="tab">  
  2.         <tr>  
  3.             <td>序號(hào)</td>  
  4.             <td>名稱</td>  
  5.             <td>價(jià)格</td>  
  6.             <td>操作</td>  
  7.         </tr>  
  8.         <tr>  
  9.             <td>1</td>  
  10.             <td>空調(diào)</td>  
  11.             <td>3999</td>  
  12.             <td><a href="javascript:void(0);">添加到購(gòu)物車(chē)</a></td>  
  13.         </tr>  
  14.         <tr>  
  15.             <td>2</td>  
  16.             <td>風(fēng)扇</td>  
  17.             <td>288</td>  
  18.             <td><a href="javascript:void(0);">添加到購(gòu)物車(chē)</a></td>  
  19.         </tr>  
  20.     </table>  
  21.     <a href="cart_購(gòu)物車(chē).html" target="_blank">查看購(gòu)物車(chē)</a>  

購(gòu)物車(chē)還原商品信息:

[javascript] view plain copy
  1. // 從 cookie 中讀取購(gòu)物車(chē)已有的商品信息  
  2.             var _products = cookie("products");  
  3.             // 判斷購(gòu)物車(chē)是否有商品  
  4.             if (_products === null || (_products = JSON.parse(_products)).length === 0)  
  5.                 return;  
  6.   
  7.             // 如果有商品,則顯示到頁(yè)面中  
  8.             $(".result")[0].innerHTML = "";  
  9.             for (var i = 0, len = _products.length; i < len; i++) {  
  10.                 // 當(dāng)前遍歷到的商品對(duì)象  
  11.                 var prod = _products[i];  
  12.                 // 克隆 .row 的節(jié)點(diǎn)  
  13.                 var _row = $(".row")[0].cloneNode(true);  
  14.                 // 將當(dāng)前商品對(duì)象的信息替換節(jié)點(diǎn)中對(duì)應(yīng)的部分,用class名獲取到的節(jié)點(diǎn)返回類型是一個(gè)數(shù)組所以要在后面加上[0]  
  15.                 $(".index", _row)[0].innerHTML = prod.id; // 編號(hào)  
  16.                 $(".name", _row)[0].innerHTML = prod.name; // 名稱  
  17.                 $(".price", _row)[0].innerHTML = prod.price; // 價(jià)格  
  18.                 $(".amount", _row)[0].innerHTML = prod.amount; // 數(shù)量  
  19.                 $(".oper", _row)[0].innerHTML = "<a href='javascript:void(0);'>刪除</a>"  
  20.   
  21.                 // 將克隆的節(jié)點(diǎn)副本追加到 .result 的 div 中  
  22.                 $(".result")[0].appendChild(_row);  
  23.             };  
  24.   
  25.             // 為每個(gè) “刪除” 的超級(jí)鏈接綁定點(diǎn)擊事件  
  26.             var links = $("a", $("#container"));  
  27.             for (var i = 0, len = links.length; i < len; i++) {  
  28.                 // links[i].index = i; // 為當(dāng)前遍歷到的超級(jí)鏈接附加數(shù)據(jù)  
  29.                 links[i].product = _products[i]; //   
  30.                 links[i].onclick = function(){  
  31.                     // alert("你點(diǎn)擊的是第" + (this.index + 1) + "個(gè)連接");  
  32.                     var index = inArray(this.product, _products);  
  33.                       
  34.                     if (index !== -1) {  
  35.                         _products.splice(index, 1);  
  36.                     }  
  37.                     // 更新 cookie  
  38.                     cookie("products", JSON.stringify(_products), {expires:7});  
  39.   
  40.                     // 找出頁(yè)面中待刪除的行  
  41.                     var _row = this.parentNode.parentNode;  
  42.                     _row.parentNode.removeChild(_row);  
  43.                 };  
  44.             }  
這里的$(' ')函數(shù)是自己封裝的函數(shù),用于獲取到DOM節(jié)點(diǎn),可以看下我關(guān)于getElementsByClassName的兼容那篇文章。

藍(lán)藍(lán)設(shè)計(jì)www.lapeinture.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

日歷

鏈接

個(gè)人資料

存檔

国产精品免费精品自在线观看| 99色视频在线观看| 日韩专区亚洲综合久久| 999久久66久6只有精品| 国产麻豆精品视频| 毛片电影网| 91麻豆国产| 午夜精品国产自在现线拍| 一本高清在线| 国产a视频| 麻豆系列 在线视频| 欧美激情一区二区三区在线 | 久久国产精品只做精品| 亚久久伊人精品青青草原2020| 精品在线观看国产| 亚洲精品影院| 日日日夜夜操| 日本在线不卡视频| 午夜家庭影院| 韩国三级香港三级日本三级| 天天做日日爱| 国产网站免费观看| 九九免费高清在线观看视频| 日本免费看视频| 精品国产一区二区三区久久久狼| 免费一级片在线| 国产一区精品| 99久久精品国产麻豆| 久久福利影视| 国产视频久久久| 国产91素人搭讪系列天堂| 欧美一级视频免费观看| 午夜在线亚洲| 一级女性全黄久久生活片| 亚洲精品影院| 午夜在线亚洲| 九九干| 日本特黄特色aa大片免费| 亚洲精品中文一区不卡| 国产网站免费观看| 欧美大片aaaa一级毛片| 免费一级片在线观看| 九九精品久久| 国产一区二区精品久久91| 韩国三级视频在线观看| 欧美日本免费| 你懂的日韩| 国产91精品系列在线观看| 午夜在线影院| 午夜激情视频在线观看 | 韩国三级一区| 亚洲第一页乱| 九九干| 毛片电影网| 毛片高清| 日韩专区第一页| 免费国产在线观看不卡| 天天做日日爱| 久草免费在线观看| 欧美国产日韩精品| 日韩中文字幕一区| 久久精品免视看国产明星| 国产网站免费| 日日夜夜婷婷| 天堂网中文字幕| 午夜激情视频在线观看| 国产不卡在线观看| 国产欧美精品午夜在线播放| 精品视频免费看| 久久久久久久久综合影视网| 可以免费看污视频的网站| 四虎影视库| 日本特黄特色aa大片免费| 精品国产亚一区二区三区| 天天做人人爱夜夜爽2020 | 亚洲第一色在线| 一级毛片视频播放| 99色播| 久久久久久久男人的天堂| 午夜欧美成人久久久久久| 亚洲天堂免费| 黄色免费网站在线| 欧美一区二区三区在线观看| 天天做日日爱夜夜爽| 亚洲 欧美 91| 日本免费乱人伦在线观看| 欧美另类videosbestsex | 亚洲精品中文一区不卡| 久久精品免视看国产成人2021| 日韩专区亚洲综合久久| 久久国产精品自线拍免费| 一级毛片看真人在线视频| 黄视频网站在线看| 91麻豆爱豆果冻天美星空| 国产伦久视频免费观看视频| 国产视频一区二区在线观看 | 国产视频在线免费观看| 久久精品道一区二区三区| 久草免费在线色站| 中文字幕97| 亚洲天堂免费观看| 国产不卡福利| 人人干人人草| 日韩在线观看视频黄| 成人高清护士在线播放| 成人影视在线播放| 国产一级生活片| 亚欧视频在线| 麻豆系列 在线视频| 精品视频一区二区| 久久国产精品永久免费网站| 亚洲第一色在线| 你懂的福利视频| 一本伊大人香蕉高清在线观看| a级毛片免费观看网站| 国产原创中文字幕| 亚欧成人毛片一区二区三区四区 | 国产亚洲精品aaa大片| 国产一级生活片| 成人影视在线播放| 韩国三级视频网站| 日韩专区一区| 欧美国产日韩精品| 久久久久久久久综合影视网| 成人高清免费| 国产视频久久久| 欧美一级视频免费观看| 国产91素人搭讪系列天堂| 国产91精品系列在线观看| 天堂网中文在线| 国产精品1024永久免费视频| 国产麻豆精品高清在线播放| 日韩专区亚洲综合久久| 青草国产在线| 中文字幕一区二区三区精彩视频| 99久久精品国产国产毛片| 精品在线观看一区| 久久精品店| 欧美1区2区3区| 麻豆污视频| 国产不卡在线看| 国产成人精品综合| 国产91精品系列在线观看| 色综合久久手机在线| 一级女性全黄生活片免费| 久久精品成人一区二区三区| 日韩中文字幕在线亚洲一区 | 99久久精品费精品国产一区二区| 国产激情一区二区三区| 国产国语对白一级毛片| 成人高清视频免费观看| 亚欧乱色一区二区三区| 可以免费看毛片的网站| 日本特黄特色aaa大片免费| 欧美α片无限看在线观看免费| 999精品视频在线| 99久久精品国产高清一区二区| 国产高清视频免费| 免费毛片播放| 欧美国产日韩在线| 亚洲女人国产香蕉久久精品| 日韩专区在线播放| 毛片成人永久免费视频| 成人高清视频免费观看| 国产91精品一区二区| 午夜精品国产自在现线拍| 国产视频在线免费观看| 国产91丝袜在线播放0| 成人高清免费| 精品国产一区二区三区免费 | 一级毛片视频播放| 四虎影视久久久| 欧美国产日韩久久久| 久久久久久久男人的天堂| 深夜做爰性大片中文| 国产高清视频免费| 午夜在线亚洲| 精品国产亚洲人成在线| 国产a毛片| 国产a毛片| 免费一级片在线| 国产成人啪精品| 你懂的国产精品| 欧美激情一区二区三区在线| 欧美日本免费| 亚洲第一页乱| 可以免费看污视频的网站| 成人影院一区二区三区| 九九久久国产精品| 精品视频免费在线| 黄色免费三级| 日日夜人人澡人人澡人人看免| 高清一级淫片a级中文字幕| 二级特黄绝大片免费视频大片| 亚洲 国产精品 日韩| 国产一级强片在线观看| 精品在线观看国产| 久草免费在线观看| 国产极品精频在线观看| 91麻豆tv|