0、前言
看之前先推薦一篇講解cookie的博客文章:JavaScript 操作 Cookie,由淺到深,講的非常透徹到位,篇幅雖然有點長,但是仔細看肯定就能懂cookie了。以下是我自己膚淺的理解,就當是讀后感或是回憶錄吧!
文章:http://blog.csdn.net/ghsau/article/details/20395681
http://www.cnblogs.com/zhangziqiu/archive/2009/08/06/cookies-javascript-aspnet.html
1、什么是cookie
cookie是
瀏覽器和服務器之間有約定:通過使用cookie技術來維護應用的狀態。
1、創建:Cookie是可以被Web服務器設置的字符串,並且可以保存在瀏覽器中。
2、發送:當瀏覽器訪問了頁面1時,web服務器設置了一個cookie,並將這個cookie和頁面1一起返回給瀏覽器,
3、保存:瀏覽器接到cookie之后,就會保存起來,
4、發送:在它訪問頁面2的時候會把這個cookie也帶上,Web服務器接到請求時也能讀出cookie的值,根據cookie值的內容就可以判斷和恢復一些用戶的信息狀態。
2、為什么用cookie
3、如何操作cookie
1)取得cookie
主要是通過傳入一個參數屬性(name),利用正則表達式來獲得對應的屬性值(value);
function getCookie(name) { // (^| )name=([^;]*)(;|$),match[0]為與整個正則表達式匹配的字符串,match[i]為正則表達式捕獲數組相匹配的數組; var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) { return unescape(arr[2]); } return null; }
2)設置cookie
通過傳入屬性名及其屬性值,設置cookie,默認為30天,可以自己修改
// 有個問題,如果傳入的name屬性,在修改之前就存在了,是不是需要修改~?
function setCookie(name,value) { var Days = 10; //此 cookie 將被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days*24*60*60*1000); if((typeof value == "string")&&(value.length > 0)){ document.cookie = name + "="+ escape(value) + ";expires=" + exp.toGMTString(); }else{ var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie=name +"="+cval+";expires="+exp.toGMTString(); } }
4、總結感觸
對於接觸到每個“前端術語”,就上面的cookie來說吧,要想掌握cookie,就必須懂它的來源,是什么,它存在的意義是就是為了保存用戶的信息,然后知道是怎么保存的,保存的形式知道了,就可以運用我們學到的js基礎知識語法來操作它改變它,使之變為我們需要的樣子,懂了需求之后,歸根到底還是考察js的基礎操作,字符串的操作,正則表達式的應用等等。